Halcon--光照不均处理

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

基于Halcon处理光照不均的图像。

一、思路

【1】采用read_image算子读取所输入待处理的彩色图像;
【2】采用decompose3算子进行rgb通道分离;
【3】采用gauss_filter算子对r通道的图像进行高斯滤波(相应的滤波还有mean_image均值滤波、median_image中值滤波,这里之所以采用gauss_filter算子,是因为高斯滤波可以保留图像的更多边缘和细节,图像更为清晰。);
【4】采用scale_image_max算子对高斯滤波处理完的图像进行对比度增强(相应的对比度增强还有emphasize,因为scale_image_max对图像明暗变化的增强更明显。);
【5】采用illuminate算子对对比度增强完的图像进行亮度调整;
【6】采用equ_histo_image算子对g、b通道图像进行直方图均衡化;
【7】采用compose3算子对rgb通道进行合并;
【8】采用dev_display算子展示效果图。

二、实现

测试图+过程展示+结果图

测试图
在这里插入图片描述

三、源码

* 读取待处理图像
read_image (test, 'D:/USER/Desktop/design/dataset/光照不均.jpg')
* rgb通道分离
decompose3(test, image_R, image_G, image_B)
* 高斯滤波处理
gauss_filter (image_R, ImageGauss, 5)
* 增强图像对比度
scale_image_max (ImageGauss, ImageScaleMax)
*emphasize (ImageGauss, em1, 5, 5, 1.5)
* 照亮图像
illuminate (ImageScaleMax, ImageI1, 20, 20, 0.55)
* 直方图均衡化
equ_histo_image (image_G, ImageEquHisto2)
equ_histo_image (image_B, ImageEquHisto3)
* 通道合并
compose3 (ImageI1, ImageEquHisto2, ImageEquHisto3, MultiChannelImage)
* 显示图像
dev_display(MultiChannelImage)

总结

希望对你的学习有所帮助。有什么疑问可以留意交流。
  • 10
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
光照不均是一种常见的图像处理问题,Halcon提供了一些方法来处理这种问题,下面是一些示例代码: 1. 使用灰度变换函数对图像进行灰度调整 ``` read_image(Image, 'example.jpg') ImageGray := channel(Image, 'gray') mean_image(ImageGray, MeanImage, 11, 11) deviation_image(ImageGray, DeviationImage, 11, 11) Gamma := 0.5 ImageResult := (ImageGray - MeanImage) * (Gamma / DeviationImage) + MeanImage ``` 上面的代码中,我们首先读入图像并提取出灰度图像,然后使用`mean_image`函数计算出图像的平均值,使用`deviation_image`函数计算出图像的标准差。最后使用灰度变换函数对图像进行灰度调整,其中`Gamma`参数控制了灰度变换的曲线,可以根据实际情况进行调整。 2. 使用均值滤波器进行平滑处理 ``` read_image(Image, 'example.jpg') ImageGray := channel(Image, 'gray') RectSize := 101 MeanFilter := gen_rectangl(1, RectSize, RectSize) ImageResult := mean_image(ImageGray, MeanFilter) ``` 上面的代码中,我们首先读入图像并提取出灰度图像,然后使用`gen_rectangl`函数生成一个矩形均值滤波器,使用`mean_image`函数对图像进行平滑处理,其中`RectSize`参数控制了矩形滤波器的大小,可以根据实际情况进行调整。 3. 使用背景分割方法进行处理 ``` read_image(Image, 'example.jpg') ImageGray := channel(Image, 'gray') Threshold := 30 OpeningSize := 21 ClosingSize := 21 Background := opening_c(ImageGray, OpeningSize, OpeningSize) Background := closing_c(Background, ClosingSize, ClosingSize) ImageResult := select_gray(ImageGray, Background < Threshold) ``` 上面的代码中,我们首先读入图像并提取出灰度图像,然后使用`opening_c`函数和`closing_c`函数对图像进行形态学开闭运算,以得到背景图像。然后使用`select_gray`函数根据阈值将图像分割成背景和前景两部分,其中`Threshold`参数控制了分割阈值,`OpeningSize`和`ClosingSize`参数控制了形态学运算的结构元素大小,可以根据实际情况进行调整。 以上是一些常见的处理光照不均问题的方法,具体的方法选择需要根据图像的实际情况来确定。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值