Halcon图像处理基础篇,emphasize

处理前景和背景对比度不高
这里就拿Halcon官方案例做案例吧,反正也只是增强一下对比度。甲方的人虽然是手抖眼瞎,但是好歹拍出的照片对比度还挺好的。

有挺多种增强对比度的方法,本篇先写一个emphasize。

问题分析

图片的背景和前景的对比度不高,使用threshold等阈值分割,效果不好,这时需要考虑增强对比度。

算子介绍:增强图像的对比度。

算子本体:emphasize(Image : ImageEmphasize : MaskWidth, MaskHeight, Factor : )
参数解释:emphasize(输入图像: 输出图像: 滤波器宽, 滤波器高, 增强因子: )
eg.emphasize (Image, ImageEmphasize, 7, 7, 1)

适用于增强图像的边缘和细节。通过应用一个滤波器来突出显示图像中的高频区域,从而使图像更加锐利和清晰。该运算符强调图像的高频区域(边缘和角落)。结果图像看起来更加锐利。在实际使用过程中,这种方法很适合对比度不明显的区域,会让亮的更亮,暗的更暗,话虽然是这么说,看起来很美好,只有在像素的边缘才会有很好的效果。

请注意,效果取决于参数的选择和图像的特性。你可以根据你的应用需求进行参数调整,以在图像处理中获得最佳的效果。

各参数不同的效果

MaskWidth, MaskHeight

这两个参数实际上是滤波器的宽和高。一般滤波器都是个正方向,MaskWidth=MaskHeight

滤波器的大小对图像处理有重要影响。

较大的滤波器可以更好地捕获图像中的低频信息,而较小的滤波器则更适合捕获图像中的高频信息。

当滤波器的大小增大时,允许更多的周围像素参与到滤波过程中,产生更平滑的结果。这种平滑效果可以用于去除图像中的噪声和杂散,有助于图像的平滑化和细节的模糊。

较小的滤波器聚焦于局部细节,并更好地突出了图像中的高频区域,比如边缘和纹理。这种高频增强的效果有助于使图像更加锐利和清晰,提升图像的细节可见度。

注意:在选择滤波器大小时,还应考虑图像的分辨率和特征的大小。较大的滤波器可能会模糊小尺寸细节,而较小的滤波器可能会忽略大尺寸特征。因此,根据应用的具体需求,需要权衡和选择合适的滤波器大小。

MaskWidth:= 3与MaskWidth:= 39,其他参数均不变,对比图如下:
可以看到当滤波器的长宽过小时,能明显的看到处理后的图片产生了噪点,边缘也更加锋利。
在这里插入图片描述

Factor

增强因子。

增强因子控制着对比度的增加程度,影响着图像中不同灰度级之间的差异程度。

较大的增强因子将导致更大的对比度增加,即增强图像中亮部和暗部之间的差异。这会使图像的细节更加明显和鲜明,从而提高图像的视觉效果。然而,如果增强因子过大,可能会导致图像过于对比度过高,出现过曝或失真的情况。

较小的增强因子将导致较小的对比度增加,图像的细节可能不够突出,相邻灰度级之间的差异可能不够明显。

Factor := 0.3与Factor :=2,其他参数均不变,对比图如下:
在这里插入图片描述
请注意,效果取决于参数的选择和图像的特性。你可以根据你的应用需求进行参数调整,以在图像处理中获得最佳的效果。

稍稍提一嘴

scale_image_max也对图像进行了增强,但是效果不好,不想介绍

  • 8
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用[1]和引用,我们可以使用Python中的OpenCV库来实现类似于Halcon中的emphasize函数的图像增强功能。具体步骤如下: 1. 导入OpenCV库 ```python import cv2 ``` 2. 定义函数emphasize,该函数接受三个参数:原始图像、增强后的图像和掩膜的宽度、高度和增强因子。 ```python def emphasize(src, dst, mask_width, mask_height, factor): # 获取图像的宽度和高度 height, width = src.shape[:2] # 定义掩膜的大小 mask_size = (mask_width, mask_height) # 对原始图像进行均值滤波 blur = cv2.blur(src, mask_size) # 计算原始图像和均值滤波后的图像之间的差异 diff = cv2.absdiff(src, blur) # 将差异乘以增强因子 diff = diff * factor # 将增强后的图像设置为原始图像加上差异 dst = src + diff # 对增强后的图像进行截断操作,将像素值限制在0到255之间 dst = cv2.threshold(dst, 0, 255, cv2.THRESH_TRUNC)[1] return dst ``` 3. 调用函数emphasize对图像进行增强 ```python # 读取原始图像 src = cv2.imread('input.jpg') # 创建增强后的图像 dst = src.copy() # 对图像进行增强 dst = emphasize(src, dst, 5, 5, 1.5) # 显示原始图像和增强后的图像 cv2.imshow('Input', src) cv2.imshow('Output', dst) cv2.waitKey(0) cv2.destroyAllWindows() ``` 在上述代码中,我们首先读取了一张名为input.jpg的图像作为原始图像,然后创建了一个与原始图像大小相同的图像dst作为增强后的图像。接着,我们调用函数emphasize对原始图像进行增强,并将增强后的图像保存在dst中。最后,我们使用OpenCV的imshow函数显示原始图像和增强后的图像。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值