halcon图像增强算子

以lena为实验对象。查看处理后的图像与灰度直方图变化

原图

灰度值缩放

//缩放图像的灰度值,    g' := g * Mult + Add
scale_image(Image : ImageScaled : Mult, Add : )
//最大灰度扩展值,取值范围是0 ~ 255。这个不用设置参数
scale_image_max (GrayImage, ImageScaleMax)
//将图像的灰度值从区间[Min,Max]缩放,下面参数设置的就是(100,150)->(20,200)缩放
//这个算子可以自定义区间,以及缩放后的图像范围区间,所有其他灰度值将被剪切
scale_image_range (GrayImage, ImageScaled1, [100,20], [150,200])
//灰度值翻转, g' = 255 - g
invert_image (GrayImage, ImageInvert)
scale_image****

(Image : ImageScaled : Mult, Add : )

作用: 拉开图像的对比度,让图像中黑的地方更黑,亮的地方更亮。

可以通过灰度范围[GMin,GMax],然后用以下公式来确定参数

g’ := g * Mult + Add

  • scale_image (GrayImage, ImageScaled, 1.5, 0)

scale_image_max

(Image, ImageScaleMax)

作用: 最大灰度扩展值,取值范围是0 ~ 255。

  • scale_image_max (GrayImage, ImageScaleMax)

scale_image_range

(Image : ImageScaled : Min, Max : )

作用: 将图像的灰度值从区间[Min,Max]缩放,下面参数设置的就是(100,150)->(20,200)缩放。 这个算子可以自定义区间,以及缩放后的图像范围区间,所有其他灰度值将被剪切。

  • scale_image_range (GrayImage, ImageScaled1, [100,20], [150,200])

灰度值计算

//灰度值翻转, g' = 255 - g
invert_image (GrayImage, ImageInvert)
//将两幅图像相乘。 g' := g1 * g2 * Mult + Add
mult_image (GrayImage, GrayImage, ImageResult, 0.01, 0)
//两幅图像相除。   g' := g1 / g2 * Mult + Add
div_image (GrayImage, ImageScaled1, ImageResult2, 255, 0)
//两幅图像相加     g' := (g1 + g2) * Mult + Add
add_image (GrayImage, GrayImage, ImageResult1, 1, 0)
//两幅图像相减     g' := (g1 - g2) * Mult + Add
sub_image (GrayImage, GrayImage, ImageSub, 1, 128)
//计算图像的对数   
log_image (GrayImage, LogImage, 'e')
//计算图像的指数。
exp_image (GrayImage, ExpImage, 'e')
//幂指数操作
pow_image (GrayImage, PowImage, 2)
//平方根操作
sqrt_image (PowImage, SqrtImage)
invert_image

(Image : ImageInvert : : )

作用:灰度值翻转,

g’ = 255 - g

  • invert_image (GrayImage, ImageInvert)

mult_image

(Image1, Image2 : ImageResult : Mult, Add : )

作用: 将两幅图像相乘。

g’ := g1 * g2 * Mult + Add

div_image

(Image1, Image2 : ImageResult : Mult, Add : )

作用: 将两幅图像相除。

g’ := g1 / g2 * Mult + Add

add_image

(Image1, Image2 : ImageResult : Mult, Add : )

作用: 将两幅图像相加。

g’ := (g1 + g2) * Mult + Add

sub_image

(ImageMinuend, ImageSubtrahend : ImageSub : Mult, Add : )

作用: 将两幅图像相减。

g’ := (g1 - g2) * Mult + Add

log_image

(Image : LogImage : Base : )

作用: 可以扩张数值较小的灰度范围或者压缩数值较大的灰度范围。

对图像的灰度值取对数,得到新的灰度值,用于提高暗部像素值 。第3个参数为对数的底,默认值为’e’。

g’ = ln(g+1)

  • log_image (GrayImage, LogImage, ‘e’)

exp_image

(Image : ExpImage : Base : )

作用: 计算图像的指数,用于提高亮部像素值 。

g’=g的e次幂

  • exp_image (GrayImage, ExpImage, ‘e’)

pow_image

(Image : PowImage : Exponent : )

作用: 对图像做指数变换 。

sqrt_image

(Image : SqrtImage : : )

作用: 计算输入图像image的平方根。

增强对比度与照明度

emphasize

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

作用: 增强图像的高频区域(边缘和拐角),使图像看起来更清晰。

使用低通(平均图像)进行滤波。根据获得的灰度值(平均值)和原始灰度值(原始值)计算得到的灰度值(res)。

res := round((orig - mean) * Factor) + orig

通过参数3、4控制均值滤波模板的大小,数值越大,则图像对比度越强,配合Factor(对比度强度)一起对图像进行增强处理。

  • emphasize (GrayImage, ImageEmphasize, 7, 7, 1)

illuminate

(Image : ImageIlluminate : MaskWidth, MaskHeight, Factor : )

  • illuminate (GrayImage, ImageIlluminate, 101, 101, 0.7)

直方图均衡化

equ_histo_image

(Image : ImageEquHisto : : )

作用: 直方图均衡就是从图像的灰度图入手,建立一个0~255灰度值的直方图,统计每个灰度值在直方图中出现的次数,将灰度图中对应点的灰度值记录在直方图中,接着对该直方图进行均衡化操作,使像素的灰度值分布得更加均匀,从而增强图像整体对比度效果,使图像更加清晰。

  • equ_histo_image (GrayImage, ImageEquHisto)

锐化边缘

shock_filter (参考

(Image : SharpenedImage : Theta, Iterations, Mode, Sigma : )

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

作用: 对输入图像应用一个冲击过滤器来锐化图像中包含的边缘,将扩散的边缘,变为阶梯式强的不连续边缘

1、首先定义最大-最小影响区域: 最大影响区域是二阶偏微分为负数的区域,最小影响区域二阶偏微分为正数的区域。

2、一个区段即最大和最小影响区域组成的区段,shock_filter使此区域内是分段常数的,即下图实线:

  • shock_filter (GrayImage, SharpenedImage, 0.5, 10, ‘canny’, 1)

灰度图像形态学

gray_erosion_rect

(Image : ImageMin : MaskHeight, MaskWidth : )

作用: 灰度腐蚀

gray_dilation_rect

(Image : ImageMax : MaskHeight, MaskWidth : )

作用: 灰度膨胀

gray_range_rect

(Image : ImageResult : MaskHeight, MaskWidth : )

作用: 用一个矩形结构元素在图像中滑动,新值 =(矩形中最大的灰度值)-(矩形中最小的灰度值)

gray_opening

(Image, SE : ImageOpening : : )

作用: 灰度开运算,先腐蚀后膨胀

gray_closing

(Image, SE : ImageClosing : : )

作用: 灰度闭运算,先膨胀后腐蚀

其它

mean_curvature_flow

(Image : ImageMCF : Sigma, Theta, Iterations : )

作用: 既可以实现高斯滤波去噪功能,同时可以保持图像梯度边缘的锐利。效果类似双边滤波。

coherence_enhancing_diff

(Image : ImageCED : Sigma, Rho, Theta, Iterations : )

作用: 对于纹理比较明显的情况,可以增强纹理;当类似纹理缺陷或者纹理很淡的时候,好像没什么用处。

针对指纹类图像比较有效果。

lena图片处理灰度图和原图差不多。

几种滤波方法

中值、均值、高斯等滤波方法。

总结:

处理图如下:

素材:

另外,log_image、exp_image、pow_image、sqrt_image会把图像由byte型变成real型。

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

icecream_cheese

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

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

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

打赏作者

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

抵扣说明:

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

余额充值