【Halcon机器视觉】ch5 图像预处理

图像的变换与矫正
  • 平移、旋转、和缩放——仿射变换和仿射变换矩阵
  • 仿射变换矩阵应用于:像素点、二维点、图像、区域、XLD轮廓等对象
*创建空仿射变换矩阵
hom_mat2d_identity(HomMat2DIdentity)
*xy各平移30变换
hom_mat2d_translate(HomMat2DIdentity, 30, 30, HomMat2DTranslate)
*旋转
hom_mat2d_rotate(HomMat2DIdentity, 0.78, 0, 0, HomMat2DRotate)
*缩放2hom_mat2d_scale(HomMat2DIdentity, 2, 2, 0, 0, HomMat2DScale)

ROI:需要提取出一张图
*关闭当前窗口,清空屏幕
dev_close_window()
*读取一张图片
read_image(Image,'./images/chepai.jpg')
*获取图像大小,以建立合适尺寸的窗口
get_image_size(Image,Width,Height)
dev_open_window(0,0,Width,Height,'black',WindowHandle)
*显示读取的图像
dev_display(Image)
*将图像转换为单通道灰度图像
rgb1_to_gray(Image,GrayImage)
*显示灰度图像
dev_display(GrayImage)
*选择ROI
gen_rectangle1(ROI_0,100, 20, 300, 500)
*从原图中分割出ROI
reduce_domain(GrayImage,ROI_0, ImageReduced)
*在新窗口中显示分割后的ROI图像
dev_open_window(0,0,Width,Height,'black',WindowHandle1)
*显示图片
dev_display(ImageReduced)


图像增强

突出图像中细节,为后续的特征识别或检测做准备

  • 直方图均衡:0-255灰度值的直方图,均衡就是使灰度值分布均匀
  • 增强对比度:对图像的边缘和细节进行增强
  • 处理失胶图像:锐化算子(SObel、Canny、Laplace)冲击滤波器shock_fliter

直方图均衡可用equ_histo_image算子,如

read_image(image,'image.jpg')
rgb1_to_gray(image,grayimage)
*直方图均衡
equ_histo_image(grayimage,ImageEquHisto)

*显示直方图
gray_histo(image,image,AbsoluteHisto1,RelativeHisto1)
gray_histo(ImageEquHisto,ImageEquHisto,AbsoluteHisto2,RelativeHisto2)
dev_open_window(0,0,512,512,'black',WindowHandle)
*处理前直方图
dev_set_color('red')
gen_region_histo(Histo1,AbsoluteHisto1,255,5,1)
*处理后直方图
dev_set_color('green')
gen_region_histo(Histo2,AbsoluteHisto2,255,450,1)

处理前
在这里插入图片描述
处理后
在这里插入图片描述
均衡前后灰度直方图对比,均衡后分布均匀一点,亮度有所提高。
在这里插入图片描述

增强对比度
read_image(Image,'image.jpg')
emphasize(Image,ImageEmphasize,7, 7, 2)
dev_display(ImageEmphasize)

read_image(Image2,'image.jpg')
scale_image_max(Image2,ImageScaleMax)
dev_display(ImageScaleMax)

emphasize算子效果
在这里插入图片描述
scale_image_max算子效果:
在这里插入图片描述

处理失焦图片

可使用’canny‘,‘Sobel’,'Laplace’等算子,对边缘进行冲击。

read_image(Image3,'shijiao')
shock_filter(Image3, SharpenedImage, 0.5, 20, 'canny', 2.5)
dev_display(SharpenedImage)

在这里插入图片描述

图像平滑与去噪

由于拍摄图像会存在杂点和噪声,可以采用图像平滑的方法去噪:均值滤波、中值滤波、高斯滤波等

  • 均值滤波:mean_image(); 临域内像素值相加取平均值,有一个滑动窗口,默认尺寸为9的正方形。缺点在于导致图像模糊,容易模糊边界

  • 中值滤波:mdian_image(); 将区域灰度值进行排序,取中间值,算子。对于去除孤立噪点有效,可以保留边缘信息,注意滤波器尺寸过大也容易模糊图像

  • 高斯滤波:gauss_filter(); 调用二维离散的高斯函数,适合去除高斯滤波,尺寸越大,平滑效果越明显,一般取3,5,7,9

均值滤波 mean_image
dev_close_window()
read_image(Image,'zhaosheng')
mean_image(Image,ImageMean, 9, 9)
dev_open_window(0,0, 512, 512, 'black', WindowHandle)
dev_display(Image)
dev_open_window(0, 0, 512, 512, 'black', WindowHandle1)
dev_display(ImageMean)

输入噪声图
在这里插入图片描述
结果
在这里插入图片描述

read_image(Image1, 'zhaosheng')
median_image(Image1, ImageMedian, 'circle', 1, 'mirrored')
dev_display(ImageMedian)

circle核结果,并不理想
在这里插入图片描述

read_image(Image1, 'zhaosheng')
median_image(Image1, ImageMedian, 'square', 1, 'mirrored')
dev_display(ImageMedian)

square核结果,效果显著
在这里插入图片描述
高斯滤波效果

*高斯滤波
read_image(Image2,'zhaosheng.jpg')
gauss_filter(Image2,ImageGauss,9)
dev_display(ImageGauss)

在这里插入图片描述

光照不均匀

前面知道直方图均衡可以增强图片亮度均匀性,所以对于彩色照片,可以分离三通道,分别直方图处理后再合成。

read_image(Image, 'an')
decompose3(Image, Image1, Image2, Image3)
mean_image(Image1, ImageMean, 9, 9)
emphasize(ImageMean, ImageEmphasize, 5, 5, 1.5)
illuminate(ImageEmphasize, ImageIlluminate, 20, 20, 0.55)
equ_histo_image(Image2,ImageEquHisto2)
equ_histo_image(Image3,ImageEquHisto3)
compose3(ImageIlluminate, ImageEquHisto2, ImageEquHisto3, MultiChannelImage)
dev_display(MultiChannelImage)

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值