halcon测试篇:灰度变换(图像预处理)

halcon测试篇:灰度变换(图像预处理)

在实际应用当中,不同的图像的功能需求各不相同,而在这些功能需求当中,由于图像的复杂性和不确定性,需要进行一些对对应图像灰度的前期预处理,再进行图像算法的后期操作。

测试例代码

dev_close_window ( )
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)

* 使用这个算子会使每个算子执行的速度变快,但是变量值不会更新在控件上面.
dev_update_off ( )

read_image (Myn, 'C:/Users/XC7Vampire/Desktop/MyN.png')
rgb1_to_gray (Myn, GrayImage)

* 灰度值变换的目的是提高图像的对比度

* 1 --- [线性变换]
* [0]add_image: 0.5*(GrayImage+GrayImage)+20 ==> g(x,y) = 0.5*f(x,y)+c
add_image (GrayImage, GrayImage, g_image, 0.5, 20)
* [1]invert_image: 图像取反.
invert_image (g_image, ivert_image)

* [2]分段线性变换
get_domain (GrayImage, _domain_image)
get_region_points (_domain_image, i_rows, i_columns)
get_grayval (GrayImage, i_rows, i_columns, i_grayval)
* 将灰度值大于200的全部变成100像素.
for index := 0 to |i_grayval|-1 by 1
    if (i_grayval[index] > 200)
        i_grayval[index] := 100
    endif
endfor
* 复制一个图像.
copy_image (GrayImage, piecewise_image)
set_grayval (piecewise_image, i_rows, i_columns, i_grayval)

* 1 --- [非线性变换]
* .e.g: 常用的有对数函数(提高低范围的像素)和指数函数(提供高范围的像素)
copy_image (GrayImage, log_image1)
log_image(log_image1, log_image2, 'e')
copy_image (GrayImage, exp_image1)
exp_image(exp_image1, exp_image2, 'e')

* 2 --- [灰度直方图变换]
copy_image (GrayImage, equ_image)
* 直方图均衡化
equ_histo_image (equ_image, equ_image1)

执行效果

下面贴出几张处理之后的效果图:

原图:
在这里插入图片描述
图像增加亮度(add_image):
在这里插入图片描述
图像取反(invert_image)
在这里插入图片描述
本篇只提供方法思路,其他效果图可自行测试~

注:转载注明出处

https://blog.csdn.net/qq_49710945/article/details/109597707

猜你喜欢

转载自blog.csdn.net/qq_49710945/article/details/109597707