我有图像



有什么方法可以去除亮点?请帮忙谢谢

编辑:

使用高斯运算后,再使用imagesc显示,将得到以下输出,清楚地显示亮点。 />


红色通道:



绿色通道:



蓝色通道:



编辑2:

使用Gabor滤波器进行缺陷检测



其直方图:



如何自适应地计算其合适的阈值??

评论

灯光的设置是否已知?

实际上,没有办法通过过滤等方法将这些斑点去除吗?

通常,这是一个不适的问题。您有太多未知数,将不得不求助于基于启发式的解决方案。祝你好运。

#1 楼

假设眩光部分是图像中唯一的饱和区域。
可以通过对强度进行阈值检测(Mathematica中的代码)来执行检测:饱和遮罩周围的图像部分(通过形态函数Dilation放大遮罩)。在本示例中,使用纹理合成(使用功能Inpaint)进行的修补似乎效果很好,尽管我无法对其进行测试以作为缺陷检测算法的输入:



评论


$ \ begingroup $
matlab中有inpaint方法吗?
$ \ endgroup $
– Vini
2012年1月26日15:49

$ \ begingroup $
对不起,我不知道答案。
$ \ endgroup $
–马特西亚·奥迪西奥(Matthias Odisio)
2012年1月26日15:55

$ \ begingroup $
缺陷检测是完美的,但是由于MATLAB中没有内置函数,因此必须实施修复
$ \ endgroup $
– Vini
2012年1月26日16:13

$ \ begingroup $
我很高兴答案能解决问题。至于在matlab中进行修复,那可能很适合一个关于SO的独立问题。请参阅stackoverflow.com/search?q=matlab+inpainting作为开始。
$ \ endgroup $
–马特西亚·奥迪西奥(Matthias Odisio)
2012年1月26日在16:23

$ \ begingroup $
可以使用此处所谓的“泊松图像混合”教程,此处的Matlab代码和示例来完成修复。
$ \ endgroup $
– Maurits
2012年1月26日18:44



#2 楼

这可能是一个简单的答案,但是您可以阈值吗?例如:

img = imread('daRNS.png');
imflat = img; 
imflat(img>150) = 150; 
imagesc(imflat)


结果:



最好自适应地选择阈值。例如,您可以查看图像直方图:

hist(double(img(:)),0:255)




,然后尝试基于此选择合适的阈值。

评论


$ \ begingroup $
请检查我的编辑2
$ \ endgroup $
– Vini
2012年1月25日17:04

$ \ begingroup $
@vini尝试看一下解释90%信号的截止点
$ \ endgroup $
–tdc
2012年1月25日17:20

$ \ begingroup $
我可以设置阈值,但是我的最终目标是缺陷检测..如果设置阈值,则无济于事
$ \ endgroup $
– Vini
2012年1月26日12:38



$ \ begingroup $
但是您的问题是“如何消除图像的眩光和亮度(图像预处理)?”而不是如何检测缺陷,这是另一个(更困难的)问题。下面的@mrkulk似乎也为该问题提供了几乎完整的答案。
$ \ endgroup $
–tdc
2012年1月26日13:53

$ \ begingroup $
是的,我的问题是我现在如何检测缺陷,但是这种眩光会妨碍结果
$ \ endgroup $
– Vini
2012年1月26日14:15

#3 楼

如果没有照明信息,就很难。但是,如果已知图像中对象的形状,则可以设置白色眩光(高斯)的形状模板,并创建滑动窗口以找到可能的眩光检测(随后来自相邻区域的颜色混合)。从视觉上讲,我们使用阴影从图像中推断出3D形状。如果阴影产生的形状能够提供表面渐变,我们可以做一个滑动窗口并检查每个位置的眩光模板。

检测到Canny边缘后:-



基本上,图像#1和#2之间的重叠(最大重叠面积)将是缺陷。

评论


$ \ begingroup $
描述要做什么-我正在使用gabor滤镜,该滤镜主要用于纹理分割以发现水果中的缺陷,但是眩光带来了问题,因为滤镜同时显示了两个白点,这也是潜在的缺陷理想地不想要
$ \ endgroup $
– Vini
2012年1月24日12:47

$ \ begingroup $
您是否尝试仅采用单个通道(来自RGB或YUV)并对其进行操作?
$ \ endgroup $
–mrkulk
2012年1月24日13:19

$ \ begingroup $
最耀眼的图像是绿色通道中的图像。我如何操作和校正它?
$ \ endgroup $
– Vini
2012年1月24日13:35

$ \ begingroup $
我尝试以0.5的阈值拍摄边缘图像(canny)。不出所料,我没有在图像中看到眩光。这应该为不包含强光的区域提供强大的先验。
$ \ endgroup $
–mrkulk
2012年1月24日15:27

$ \ begingroup $
它如何帮助我产生无眩光图像?
$ \ endgroup $
– Vini
2012年1月24日17:51

#4 楼

我认为这是一个机器视觉问题,您应该在其中控制照明并充分了解图像中无眩光像素亮度的最大亮度。缺陷检测通常是机器视觉问题,而不是计算机视觉问题。

照明导致的结果是增加了光的镜面反射和漫反射(加上一些发射率,但此处可以忽略不计) 。

镜面反射组件是眩光,在像苹果这样的发光表面上,它远远超过了漫反射(> 10x)

,这意味着如果您设置在此之前,您可以确保在漫反射表面上的照明,增益和曝光没有东西会接近饱和。因此,使用固定的阈值实际上是这里的首选解决方案,只要您已证明有足够的数据“没有不包含眩光的像素”会高于阈值。本质上,您是在设置照明条件和摄影机参数,以使像素分类变得微不足道,在这种情况下,该阈值仅由简单的阈值执行,而不是由机器学习的更复杂的周围像素功能来实现。

我喜欢“ vini”的方法,不需要显示RGB平面。只是一个简单的灰度阈值实际上就可以在这里工作。

1-设计照明条件,而不是环境

2-使分类工作非常琐碎(阈值)

3-测量特征

4-比较公差

#5 楼

首先转换为实验室色彩空间mapminmax,然后使用第一个发光度通道。这样可以减少颜色问题。然后在最亮的80%像素上使用一些阈值。检查并测试直方图中的下降,最佳阈值在下降的底部附近。如果该区域没有本地分钟,则您的图像可能反射得很少……马丁