此例子主要是为了把光伏电池片的指纹以及划痕标注出来。
总代码:
*读取图片
read_image (Image, 'E:/研究生学习/电池片练习/手指印/截图.png')
*清除窗口
dev_clear_window ()
*打开新的窗口
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
*获得图片的大小
get_image_size (Image, Width, Height)
*适应窗口
dev_set_part (0, 0, Height, Width)
*显示图片
dev_display (Image)
*使用矩形遮罩执行灰度值打开-把电池片的横线部分去除
gray_opening_rect (Image, ImageOpening, 30, 1)
*进行图像差分
sub_image (Image, ImageOpening, ImageSub, 1, 128)
*自动阈值
binary_threshold (ImageSub, Region, 'max_separability', 'light', UsedThreshold)
*膨胀
dilation_circle (Region, RegionDilation, 3.5)
*连通域分割
connection (RegionDilation, ConnectedRegions)
*特征选择
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 871.56, 5678.9)
*取交集
intersection (SelectedRegions, Region, RegionIntersection)
*显示图片
dev_display (Image)
*显示划痕
dev_display (RegionIntersection)
*-------------检测指纹
*灰度化
rgb1_to_gray (Image, GrayImage)
emphasize (GrayImage, ImageEmphasize, 7, 7, 1)
*二值化
threshold (ImageEmphasize, Regions, 30, 255)
*开运算
opening_rectangle1 (Regions, RegionOpening,5, 2)
dilation_rectangle1 (RegionOpening, RegionDilation1, 21, 2)
*连通域分割
connection (RegionDilation1, ConnectedRegions1)
select_shape (ConnectedRegions1, SelectedRegions1, ['column','compactness'], 'and', [140.65,0], [410.75,19.486])
union1 (SelectedRegions1, RegionUnion)
*设置描绘方式
dev_set_draw ('margin')
*显示图片
dev_display (Image)
*显示划痕
dev_display (RegionUnion)
*显示指纹
dev_display (SelectedRegions)
逐段分析:
*读取图片
read_image (Image, 'E:/研究生学习/电池片练习/手指印/截图.png')
*清除窗口
dev_clear_window ()
*打开新的窗口
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
*获得图片的大小
get_image_size (Image, Width, Height)
*适应窗口
dev_set_part (0, 0, Height, Width)
*显示图片
dev_display (Image)
*使用矩形遮罩执行灰度值打开-把电池片的横线部分去除
gray_opening_rect (Image, ImageOpening, 30, 1)
*进行图像差分
sub_image (Image, ImageOpening, ImageSub, 1, 128)
*自动阈值
binary_threshold (ImageSub, Region, 'max_separability', 'light', UsedThreshold)
*膨胀
dilation_circle (Region, RegionDilation, 3.5)
*连通域分割
connection (RegionDilation, ConnectedRegions)
*特征选择
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 871.56, 5678.9)
*取交集
intersection (SelectedRegions, Region, RegionIntersection)
*显示图片
dev_display (Image)
*显示划痕
dev_display (RegionIntersection)
*灰度化
rgb1_to_gray (Image, GrayImage)
*图像增强
emphasize (GrayImage, ImageEmphasize, 7, 7, 1)
*二值化
threshold (ImageEmphasize, Regions, 30, 255)
*开运算
opening_rectangle1 (Regions, RegionOpening,5, 2)
*膨胀
dilation_rectangle1 (RegionOpening, RegionDilation1, 21, 2)
*连通域分割
connection (RegionDilation1, ConnectedRegions
*面积特征选择
select_shape (ConnectedRegions1, SelectedRegions1, ['column','compactness'], 'and', [140.65,0], [410.75,19.486])
*联合
union1 (SelectedRegions1, RegionUnion)
*设置描绘方式
dev_set_draw ('margin')
*显示图片
dev_display (Image)
*显示划痕
dev_display (RegionUnion)
*显示指纹
dev_display (SelectedRegions)
下面是第一种方法: