检测液晶显示屏(LCD)上的“mura”缺陷

1 篇文章 0 订阅
1 篇文章 0 订阅

这段代码是使用HALCON软件编写的,HALCON是一款专业的图像处理软件,常用于机器视觉领域。代码的主要目的是检测液晶显示屏(LCD)上的“mura”缺陷。Mura是一种日语词汇,意为“不均匀”,在显示屏领域通常指图像上的不均匀区域或暗斑。

  • this example shows how to detect mura defects
  • in highly textured images

dev_close_window ()
dev_update_off ()
Path := ‘lcd/mura_defects_texture_’
read_image (Image, Path + ‘01’)
get_image_size (Image, Width, Height)
dev_open_window (0, 0, 640, 480, ‘black’, WindowHandle)
set_display_font (WindowHandle, 14, ‘mono’, ‘true’, ‘false’)
dev_set_draw (‘margin’)
dev_set_line_width (3)
dev_set_color (‘red’)
for f := 1 to 2 by 1
read_image (Image, Path + f$‘.2i’)
decompose3 (Image, R, G, B)
* defects are characterized by dark patches. Hence, by substracting the
* estimated background illumination from the original image the
* defects become more apparent
estimate_background_illumination (B, ImageFFT1)
sub_image (B, ImageFFT1, ImageSub, 2, 100)
* median filter smooths out the fine texture, simplifying the following
* segmentation and final detection of defects
median_image (ImageSub, ImageMedian, ‘circle’, 9, ‘mirrored’)
watersheds_threshold (ImageMedian, Basins, 20)
* dark patches corresponding to defects have a very low energy
cooc_feature_image (Basins, ImageMedian, 6, 0, Energy, Correlation, Homogeneity, Contrast)
tuple_find (sgn(Energy - 0.05), -1, Indices)
select_obj (Basins, Defects, Indices + 1)
*
dev_display (Image)
dev_display (Defects)
count_obj (Defects, NDefects)
disp_message (WindowHandle, NDefects + ’ ‘mura’ defects detected’, ‘window’, -1, -1, ‘red’, ‘true’)
if (f < 2)
disp_continue_message (WindowHandle, ‘black’, ‘true’)
stop ()
endif
endfor

在这里插入图片描述
在这里插入图片描述
以下是程序运行的结果
在这里插入图片描述
在这里插入图片描述

以下是代码逐行解释:

dev_close_window (): 关闭当前打开的窗口。
dev_update_off (): 关闭实时更新,提高处理速度。
Path := ‘lcd/mura_defects_texture_’: 定义图像文件的路径前缀。
read_image (Image, Path + ‘1’): 读取编号为1的图像文件。
get_image_size (Image, Width, Height): 获取图像的宽度和高度。
dev_open_window (, , 640, 480, ‘black’, WindowHandle): 打开一个窗口用于显示图像,窗口大小为640x480像素,背景颜色为黑色。
set_display_font (WindowHandle, 14, ‘mono’, ‘true’, ‘false’): 设置显示窗口的字体。
dev_set_draw (‘margin’): 设置绘制边界。
dev_set_line_width (3): 设置绘制线条的宽度。
dev_set_color (‘red’): 设置绘制颜色为红色。
for f := 1 to 2 by 1: 循环两次,分别处理编号为1和2的图像。
read_image (Image, Path + f$‘.2i’): 读取当前循环编号的图像文件。
decompose3 (Image, R, G, B): 将图像分解为红、绿、蓝三个通道。
estimate_background_illumination (B, ImageFFT1): 估计背景照明。
sub_image (B, ImageFFT1, ImageSub, 2, 100): 从原始图像中减去估计的背景照明,突出显示缺陷。
median_image (ImageSub, ImageMedian, ‘circle’, 9, ‘mirrored’): 使用9x9的圆形中值滤波器平滑图像,减少纹理干扰。
watersheds_threshold (ImageMedian, Basins, 20): 使用分水岭算法对图像进行阈值分割,得到不同的区域。
cooc_feature_image (Basins, ImageMedian, 6, , Energy, Correlation, Homogeneity, Contrast): 计算区域的特征,如能量、相关性、同质性和对比度。
tuple_find (sgn(Energy - .5), -1, Indices): 找到能量值低于.5的区域。
select_obj (Basins, Defects, Indices + 1): 选择这些区域作为缺陷。
dev_display (Image): 显示原始图像。
dev_display (Defects): 显示缺陷图像。
count_obj (Defects, NDefects): 计算缺陷的数量。
disp_message (WindowHandle, NDefects + ’ ‘mura’ defects detected’, ‘window’, -1, -1, ‘red’, ‘true’): 在窗口中显示检测到的缺陷数量。
if (f < 2): 如果是第一次循环。
disp_continue_message (WindowHandle, ‘black’, ‘true’): 显示继续信息。
stop (): 暂停,等待用户操作。
总结:这段代码通过图像处理技术检测液晶显示屏上的mura缺陷,并通过分水岭算法和特征计算来识别和显示这些缺陷。

液晶屏的mura缺陷是指屏幕出现的亮度不均匀、色差、条纹、亮点、暗点等问题。使用Halcon进行mura缺陷检测通常涉及图像采集、预处理、缺陷检测等步骤。以下是一个简化版的Halcon代码示例,用于检测液晶屏的mura缺陷: ```halcon * 假设已经获取了图像grab_image_start(Image) * 图像预处理 threshold(Image, Region, 100, 200) connection(Region, ConnectedRegions) select_shape(ConnectedRegions, SelectedRegions, 'area', 'and', 5000, 100000) count_obj(SelectedRegions, Number) * 对选中的区域进行分析,判断是否为缺陷 for i := 1 to Number by 1 select_obj(SelectedRegions, CurrentRegion, i) moments(CurrentRegion, Area, Row, Column, Phi, Lambda1, Lambda2) eccentricity(CurrentRegion, Eccentricity) if (Area < 10000 or Eccentricity > 0.8) dev_display(CurrentRegion) endif endfor * 其他后处理步骤... * 结束图像采集 grab_image_async(Image, 'end') ``` 这段代码的解释如下: 1. 使用`grab_image_start`函数获取图像。 2. 通过`threshold`对图像进行阈值分割,得到初步的区域Region。 3. 使用`connection`将相邻的像素点合并为一个区域,得到连接区域ConnectedRegions。 4. 使用`select_shape`选择面积在一定范围内的区域作为潜在缺陷区域,存储在SelectedRegions中。 5. 遍历SelectedRegions中的每一个区域,使用`moments`计算区域的矩,通过`eccentricity`计算区域的偏心率。 6. 如果区域的面积小于10000或者偏心率大于0.8,则认为该区域是mura缺陷,并显示出来。 需要注意的是,Halcon提供了强大的图像处理和分析功能,但实际应用中的参数(如阈值、面积范围、偏心率阈值等)需要根据具体情况进行调整,以达到最佳的检测效果。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Happy Monkey

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值