图像预处理

Halcon 基础知识(一)_leo_888的专栏-CSDN博客
 

hom_mat2d_identity (HomMat2DIdentity)
解释:定义一个对角为 1 的 单位矩阵,它和任何矩阵相乘等于原矩阵本身。

hom_mat2d_translate (HomMat2DIdentity, Tx, Ty, HomMat2DTranslate)
功能:把平移添加到防射变换矩阵
HomMat2D(输入参数):仿射变换矩阵
Tx(输入参数):沿x轴方向平移的距离
Ty(输入参数):沿y轴方向平移的距离
HomMat2DTranslate(输出参数):输出变换矩阵

##图像预处理部分
#1图像的平移、旋转、缩放、仿射变换、投影变换
read_image(Image,'E:/C/Halcon/1.jpg')

hom_mat2d_identity (HomMat2DIdentity)
hom_mat2d_translate(HomMat2DIdentity,300,500,HomMat2DIdentity)
affine_trans_image (Image, ImageAffineTrans, HomMat2DIdentity, 'constant', 'false')
#旋转
hom_mat2d_identity (HomMat2DIdentity)
hom_mat2d_rotate (HomMat2DIdentity, 0.78, 300, 300, HomMat2DRotate)
affine_trans_image (Image, ImageAffineTrans, HomMat2DRotate, 'constant', 'false')
#缩放
hom_mat2d_identity (HomMat2DIdentity)
hom_mat2d_scale (HomMat2DIdentity, 0.5, 0.5, 0, 0, HomMat2DScale)
affine_trans_image (Image, ImageAffineTrans, HomMat2DScale, 'constant', 'false')

二、ROI

提取感兴趣区域,从而减小计算量。在图像匹配中,可以定义模板。是个区域。

HALCON学习之ROI_青铜小码农-CSDN博客

在halcon中,ROI需要两步来完成,第一步是划定区域,第二步是裁剪出区域。

划分区域,有两种方式,第一种是使用界面的create ROI,可以选择各种框图。第二种是使用算子:gen_rectangle等。

裁剪出区域,因为我们在图像中,只是画了区域,并没有裁剪出来,使用算子reduce_domain.这个算子,你可以理解为,ROI ,也就是图像的作用域,ROI 的建立,使原来的整张图像的作用域减少为ROI,即我们指定的区域,作用域减少了,就有了算子名称的由来。

三、图像增强  先图像增强,再图像降噪

直方图均衡化、增强对比度、处理失焦图像

图像的噪声也增强了

从灰度图出发,建立一个0-255的灰度直方图,统计每一个灰度值出现的次数。接着对直方图进行均衡化操作,使像素的灰度值分布更加均匀,从而增强图像的亮度。

#直方图均衡化
read_image(Image,'E:/C/Halcon/1.jpg')
rgb1_to_gray(Image,GrayImage)

equ_histo_image(GrayImage,ImageEquHisto)


gray_histo(Image,Image,AbsoluteHisto1,RelativeHisto1)
gray_histo(ImageEquHisto,ImageEquHisto,AbsoluteHisto2,RelativeHisto2)
gen_region_histo(H1,AbsoluteHisto1,255,5,1)
gen_region_histo(H2,AbsoluteHisto2,255,400,1)

equ_histo_image:直方图均衡化(包含灰度转化直方图,直方图均衡化两个步骤)

gray_histo:计算灰色值的分布。  后两个参数,一个绝对频率,一个相对频率

gen_region_histo:将一个直方图转换为一个区域

gen_region_histo将使用gray_histo、gray_histo_range或tuple_histo_range创建的直方图转换为一个区域。行和列定义了图形中心的位置。

Scale
allows scaling of the graphic, whereby 1 means displaying all 256 values, 2 means displaying 128 values, 3 means
displaying only 64 values, etc.

 

增强对比度:对图像的边缘和细节进行增强,使其更加明显。emphasize函数

read_image(Image,'E:/C/Halcon/1.jpg')
emphasize(Image,ImageEm,10,10,1.5)
dev_display(ImageEm)

emphasize(Image : ImageEmphasize : MaskWidth, MaskHeight, Factor : )

MaskWidth, MaskHeight:掩码大小

Factor :比例因子

mean:得到的灰度值 的平均

orig:原始的灰度值
res: 得到的灰度值        (亮的更亮,暗的更暗)
MaskWidth MaskHeight  低通掩码的整数宽度。
Default value: 7
Suggested values: MaskWidth {3, 5, 7, 9, 11, 15, 21, 25, 31, 39}
典型的值范围: 3 MaskWidth 201
最小增量: 2
推荐增量: 2
. Factor   对比度强调的真实强度
Default value: 1.0
Suggested values: Factor {0.3, 0.5, 0.7, 1.0, 1.4, 1.8, 2.0}
Typical range of values: 0.0 Factor 20.0 (sqrt)
Minimum increment: 0.01
Recommended increment: 0.2
限制:0: 0 < Factor && Factor < 20

处理失焦图像:对焦不准的图像可能存在模糊不清的情况,考虑锐化操作。在凸显搞得边缘形成一些冲击,对图像的边缘进行增强。属于图像增强方法,主要增强边缘,减少图像边缘扩散,更便于边缘提取等操作。

算法功能

  • 在图像边缘产生强的不连续性,
  • 在一个区段内(包含一个最大影响区和一个最小影响区的范围简称为区段)图像是分段常数
read_image(Image,'E:/C/Halcon/1.jpg')
shock_filter(Image,ImageEm,0.5,20,'canny',2.5)
dev_display(ImageEm)

shock_filter(Image : SharpenedImage : Theta, Iterations, Mode, Sigma : )
// Theta:即Δt  步长
// Iterations:迭代次数
// Mode:可选canny或laplacian, 二维微分算子
// Sigma:平滑参数,为了使边缘提的更鲁棒,Sigma是高斯平滑的标准差

图像平滑与去噪 

降噪会使图像变得模糊

#图像平滑与降噪
read_image(Image,'E:/C/Halcon/1.jpg')
mean_image(Image,ImageOut,9,9)
median_image(Image,ImageOut,'circle',3,'continued')
gauss_filter(Image,ImageOut,5)

mean_image

 median_image


gauss_filter

 光照不均匀

#光照不均匀现象  彩色图像
read_image(Image,'E:/C/Halcon/1.jpg')
#1.分离出RGB通道
decompose3(Image,image1,image2,image3)
#对每个通道图像进行直方图均衡化
equ_histo_image(image1,image_equ1)
equ_histo_image(image2,image_equ2)
equ_histo_image(image3,image_equ3)
#合并
compose3(image1,image2,image3,mu)

  • 1
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
图像预处理是指在进行机器学习或计算机视觉任务之前,对图像进行一系列的处理和转换,以提取有用的特征并减少噪声的影响。Python提供了多种库和工具来进行图像预处理,其中包括Scikit-learn和OpenCV。 在Scikit-learn中,可以使用preprocessing模块来进行图像预处理。该模块提供了一系列的函数和类,用于对图像进行缩放、平滑、二值化、去噪等操作。下面是一个示例代码,展示了如何使用Scikit-learn进行图像预处理: ```python from sklearn import preprocessing # 加载图像数据 image_data = ... # 缩放图像 scaled_image = preprocessing.scale(image_data) # 平滑图像 smoothed_image = preprocessing.smooth(image_data) # 二值化图像 binarized_image = preprocessing.binarize(image_data, threshold=0.5) # 去噪图像 denoised_image = preprocessing.denoise(image_data) # 其他图像预处理操作... ``` 另外,OpenCV也是一个强大的图像处理库,提供了丰富的图像处理函数和算法。可以使用OpenCV进行图像的读取、缩放、旋转、滤波、边缘检测等操作。下面是一个示例代码,展示了如何使用OpenCV进行图像预处理: ```python import cv2 # 读取图像 image = cv2.imread('image.jpg') # 缩放图像 resized_image = cv2.resize(image, (new_width, new_height)) # 旋转图像 rotated_image = cv2.rotate(image, cv2.ROTATE_90_CLOCKWISE) # 滤波图像 blurred_image = cv2.blur(image, (5, 5)) # 边缘检测 edges = cv2.Canny(image, threshold1, threshold2) # 其他图像预处理操作... ``` 通过使用Scikit-learn和OpenCV,你可以根据具体的需求对图像进行预处理,以便更好地应用于机器学习或计算机视觉任务。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

qq_42475191

谢谢老板

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

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

打赏作者

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

抵扣说明:

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

余额充值