锐化USM


锐化度是图像细节清晰度的一个属性。锐化是图像处理技术中比较常见的一种技术了,很多场合都需要使用到,用以提高图像或视频的清晰度。

 

USM锐化,USM是指Unsharp Masking,是指使用一个blurred,unsharp的原始图像的mask来进行锐化,一般的流程是:


z(n,m)是校正信号,一般是原始图像的高频信息,体现为边缘,通过线性组合可以获得最终锐化后的结果。

 

所以一般的步骤为:

1.       将原始图像进行高斯滤波或其他低通滤波得到模糊图像

2.       原始图像和模糊图像相减得到边缘图像

3.       将边缘图像和原始图像进行线性组合得到锐化后图像

 

Photoshop中也有USM锐化,有三个参数:半径、数量和阈值

半径:指高斯模糊的半径,越大则越模糊则相减后细节越多,边缘增强越多。

数量:控制相减后的对比度,越大,则边缘越明显。

阈值:指边缘图像中大于该阈值的进行锐化,否则不进行锐化。越大则锐化细节越少。

 

总之,在USM锐化的整个流程中,每个环节都可以根据自己的需要进行调整,比如不一定采用高斯滤波,有的采用中值滤波,均值滤波等都可以。在选取边缘的时候可以采用一些策略,选取一些方向上的边缘,阈值也可以进行调整。在和原始图像进行组合的时候也可以根据需求来指定自己的组合方案。

 

效果图:

锐化完全可以再GPU中进行优化,经过优化后,实验证明完全能够满足实时性的要求。

 

这种思路也可以参考另外一个人的博文,用类似USM的方式去掉轻微的模糊

http://blog.youkuaiyun.com/celerychen2009/article/details/9857349


另外看到过,GIMP中的锐化


fact越大锐化程度越高,锐度很高的时候会出现artifact,并没有考虑图像本身的一些特性。

 

锐度估计也是一个需要考虑的问题。有一篇文献A No-Reference ObjectiveImage Sharpness Metric Based on the Notion of Just Noticeable Blur (JNB)中介绍了一些No-reference sharpnessmetrics。具体我也没有仔细研究,后续有时间研究下。

### 实现USM(Unsharp Mask)锐化 USM(Unsharp Mask)是一种图像处理技术,用于增强图像边缘并使图像看起来更清晰。通过Python可以利用`PIL`库中的功能来实现这一效果。 对于USM的实现,通常涉及以下几个方面: - 创建一个模糊版本的原图作为掩模。 - 将原始图片减去这个模糊版图片得到差异部分。 - 把计算出来的差值按一定比例加回原来的图像上以达到锐化的效果[^1]。 下面是一个简单的例子展示怎样用Python编写函数完成上述过程: ```python from PIL import Image, ImageFilter def apply_unsharp_mask(image_path, output_path='output.jpg', radius=2, percent=150, threshold=3): original_image = Image.open(image_path).convert('RGB') blurred = original_image.filter(ImageFilter.GaussianBlur(radius)) result = ImageChops.blend(original_image, blurred, -float(percent)/100) diff = ImageChops.difference(result, original_image) # Only blend areas where difference is greater than the threshold. def pixel_filter(pixel): if sum([abs(p) for p in pixel]) > threshold * 3: return tuple(int(c + d*(percent / 100)) for c,d in zip(pixel, diff.getpixel((0,0)))) else: return pixel width, height = original_image.size sharp_img = original_image.copy() pixels = sharp_img.load() for y in range(height): for x in range(width): pixels[x,y] = pixel_filter(diff.getpixel((x,y))) sharp_img.save(output_path) ``` 此代码片段定义了一个名为`apply_unsharp_mask()` 的函数,它接受输入文件路径以及可选参数如半径、百分比强度和阈值等设置来进行不同程度上的锐化操作,并保存最终的结果到指定位置。 需要注意的是,在实际应用中可能还需要考虑更多细节调整以适应不同场景下的需求;此外,这里使用的算法只是众多方法之一,其他框架比如OpenCV也提供了相应的API可以直接调用来简化开发流程[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值