我有一张图片
有什么办法可以消除亮点?请帮忙谢谢
编辑:
使用高斯运算后,再使用imagesc显示后,将获得以下输出,该输出清楚地显示了亮红色的斑点如何去除它们
红色频道:
绿色通道:
蓝色频道:
编辑2:
使用Gabor滤波器进行缺陷检测
其直方图:
如何自适应地计算其适当的阈值?
我有一张图片
有什么办法可以消除亮点?请帮忙谢谢
编辑:
使用高斯运算后,再使用imagesc显示后,将获得以下输出,该输出清楚地显示了亮红色的斑点如何去除它们
红色频道:
绿色通道:
蓝色频道:
编辑2:
使用Gabor滤波器进行缺陷检测
其直方图:
如何自适应地计算其适当的阈值?
Answers:
假设眩光部分是图像中唯一的饱和区域。可以通过设置强度阈值(Mathematica中的代码)来执行检测:
saturated = Binarize[ColorConvert[img, "Grayscale"], .9]
然后,我们只需要替换饱和蒙版周围的图像部分即可(通过形态函数完成对蒙版的放大Dilation
)。Inpaint
尽管无法将它作为缺陷检测算法的输入进行测试,但使用纹理合成(使用函数)进行的修复似乎在此示例中运行良好:
Inpaint[img, Dilation[saturated, DiskMatrix[20]]]
这可能是一个简单的答案,但是您可以阈值吗?例如:
img = imread('daRNS.png');
imflat = img;
imflat(img>150) = 150;
imagesc(imflat)
结果是:
自适应地选择阈值显然会更好。例如,您可以查看图像直方图:
hist(double(img(:)),0:255)
并尝试据此选择合适的阈值。
没有照明信息,就很难。但是,如果已知图像中对象的形状,则可以设置白色眩光(高斯)的形状模板,并创建滑动窗口以找到可能的眩光检测(随后来自相邻区域的颜色混合)。从视觉上讲,我们使用阴影从图像中推断出3D形状。如果阴影产生的形状能够提供表面渐变,我们可以做一个滑动窗口并在每个位置检查眩光模板。
精锐边缘检测后:-
基本上,图像#1和#2之间的重叠(最大重叠面积)将是缺陷。
我的观点是,这是一个机器视觉问题,您应该在其中控制照明并充分了解图像中非眩光像素亮度的最大亮度。缺陷检测通常是机器视觉问题,而不是计算机视觉问题。
照明的结果是增加了镜面反射和漫反射光(加上一些发射率,但在这里可以忽略不计)。
镜面反射是眩光,像苹果一样在发光表面上,它比漫反射(> 10x)还要多
这意味着,如果您在此之前在散射表面上设置照明,增益和曝光,则可以确保没有任何东西甚至接近饱和。因此,使用固定的阈值实际上是这里的首选解决方案,只要您已证明有足够的数据“没有不包含眩光的像素”会高于阈值。本质上,您是在设置照明条件和摄像头参数,以使像素分类变得微不足道,在这种情况下,像素阈值仅由简单的阈值执行,而不是由机器学习到的周围像素的功能更为复杂。
我喜欢“ vini”的方法,不需要显示RGB平面。一个简单的灰度阈值实际上将在这里起作用。
1-您设计照明条件,而不是环境
2-使分类工作非常琐碎(阈值)
3-测量功能
4-比较公差