zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Halcon转OpenCV实例--去除纸张中的颜色笔迹/墨迹(附源码)

Opencv实例源码 -- 颜色 去除 HALCON
2023-09-27 14:25:48 时间

导读

本文主要介绍一个去除纸张中颜色笔迹/墨迹的实例,并将Halcon实现转为OpenCV。

实例来源

实例来源于51Halcon论坛的讨论贴:

https://www.51halcon.com/forum.php?mod=viewthread&tid=4766

图片

Halcon实现

参考回帖内容,将代码整理如下:

read_image (Image, './test.jpg')get_image_size (Image, Width, Height)decompose3 (Image, ImageR, ImageG, ImageB)trans_from_rgb (ImageR, ImageG, ImageB, ImageY, ImageI, ImageQ, 'yiq')threshold (ImageQ, Regions, 132, 255)
dilation_rectangle1 (Regions, RegionDilation, 25, 15)inpainting_texture (Image, RegionDilation, InpaintedImage, 5, 20, 0, 'none', 0)

图片

图片

如上图所示,可以较好的去除图中红色和蓝色的笔迹。

OpenCV实现

分析实现方法与思路:

[1] 将原图从BGR颜色空间转为YIQ颜色空间;

[2] 分离Q通道图像对其做二值化处理;

[3] 矩形核做膨胀操作,将笔迹区域连接

[4] 将膨胀后的图像作为mask,传给inpaint函数,通过图像修复来去除笔迹。

实现代码(Python-OpenCV):

#公众号:OpenCV与Halcon视觉import cv2import numpy as np  img = cv2.imread('test.jpg')cv2.imshow('src',img)
img_q = np.zeros((img.shape[0],img.shape[1],1),np.float32)
for i in range(0,img.shape[0]):     for j in range(0,img.shape[1]):         B = img[i,j,0]        G = img[i,j,1]        R = img[i,j,2]        img_q[i,j] = 0.214*R - 0.522*G + 0.309*B
cv2.normalize(img_q, img_q, 0, 255, cv2.NORM_MINMAX, -1)
imgQ = cv2.convertScaleAbs(img_q)cv2.imshow('imgQ',imgQ)        ret, thresImg= cv2.threshold(imgQ, 165, 255, cv2.THRESH_BINARY)cv2.imshow('thresh',thresImg)
k1=np.ones((20,30), np.uint8)#指定膨胀核大小thresImg = cv2.dilate(thresImg, k1, iterations=1)cv2.imshow('dilation', thresImg)
result = cv2.inpaint(img,thresImg,3,cv2.INPAINT_NS)cv2.imshow('result', result)

cv2.waitKey(0)cv2.destroyAllWindows()

逐步效果演示

原图:src

图片

Q通道转8位显示:imgQ

图片

二值化效果:thresImg

图片

膨胀效果:dilation

图片

inpaint修复效果:result

图片

结尾语

[1] 提取笔迹的方法有很多种,本文使用的是YIQ颜色空间的Q通道图像(直接对单个通道阈值处理较简单),大家也可以使用其他颜色空间提取红色和蓝色即可(可能需要使用inRange函数在三个通道处理);

[2] RGB颜色空间与YIQ颜色空间的转换:

① 网上流行的转换公式:

图片

② Halcon算子帮助文档中的转换公式:

图片

二者略有差异,本文使用的是Halcon帮助文档中的转换方法,直接计算得到Q通道图像。

完整代码(Python C++实现)与素材将发布在知识星球中,有问题可以留言或在星球中提问。

相关文章连接:

Halcon缺陷检测实例转OpenCV实现(一)

Halcon缺陷检测实例转OpenCV实现(二)

Halcon缺陷检测实例转OpenCV实现(三)

Halcon缺陷检测实例转OpenCV实现(四)

Halcon缺陷检测实例转OpenCV实现(五) 混合颜色药片缺陷检测

Halcon缺陷检测实例转OpenCV实现(六) 瓶口缺陷检测

Halcon转OpenCV实例--复杂背景下缺陷检测(附源码)

更多视觉图像处理相关内容,请长按关注:OpenCV与Halcon视觉。