1.介绍

USM技术是通过增强图像的高频部分的内容来提高视觉效果,用具体的公式表达即为:y(n,m)= x(n,m)+ λz(n,m) ,其中, x(n,m)为输入图像,y(n,m)为输出图像,而z(n,m)为校正信号,一般是通过对x进行高通滤波获取。λ是用于控制增强效果的的一个缩放因子。在传统的USM算法中,z(n,m)一般可以通过拉普拉斯锐化,但传统的USM算法一般效果不好。

本文主要是介绍Photoshop的自适应USM锐化,其有三个控制参数:半径、数量、阈值。

1)高斯模糊是低通滤波,原始图片 - 低通滤波之后的图片 = 高通结果

2)自适应表现:如果原值和低通的差异的绝对值大于指定的阈值,才对该点进行锐化

2.代码

#include <opencv2\opencv.hpp>
#include <iostream>
#include <string>
#include <math.h>using namespace cv;
using namespace std;void sharp(const Mat& src, Mat& dst, const int& Radius, const int& Threshold, const int& Amount) {int height = src.rows;int width = src.cols;GaussianBlur(src, dst, cv::Size(Radius, Radius), 2, 2);for (int h = 0; h < height; ++h) {for (int w = 0; w < width; ++w) {int bValue = src.at<Vec3b>(h, w)[0] - dst.at<Vec3b>(h, w)[0];int gValue = src.at<Vec3b>(h, w)[1] - dst.at<Vec3b>(h, w)[1];int rValue = src.at<Vec3b>(h, w)[2] - dst.at<Vec3b>(h, w)[2];if (abs(bValue) > Threshold) {bValue = src.at<Vec3b>(h, w)[0] + Amount * bValue / 100;if (bValue > 255)bValue = 255;else if (bValue < 0)bValue = 0;dst.at<Vec3b>(h, w)[0] = bValue;}if (abs(gValue) > Threshold) {gValue = src.at<Vec3b>(h, w)[1] + Amount * gValue / 100;if (gValue > 255)gValue = 255;else if (gValue < 0)gValue = 0;dst.at<Vec3b>(h, w)[1] = gValue;}if (abs(rValue) > Threshold) {rValue = src.at<Vec3b>(h, w)[2] + Amount * rValue / 100;if (rValue > 255)rValue = 255;else if (rValue < 0)rValue = 0;dst.at<Vec3b>(h, w)[2] = rValue;}}}
}int main() {Mat src = imread("Lena.jpg");Mat dst = Mat(src.rows, src.cols, src.type());sharp(src, dst, 201, 0, 50);imshow("src", src);imshow("dst", dst);waitKey(0);return 0;
}

    效果图:

3.参考资料

https://www.cnblogs.com/Imageshop/archive/2013/05/19/3086388.html

Opencv之Unsharp Mask(USM)锐化相关推荐

  1. Unsharp Mask(USM)锐化算法的的原理及其实现

    本篇博文来自博主Imageshop,打赏或想要查阅更多内容可以移步至Imageshop. 转载自:https://www.cnblogs.com/Imageshop/archive/2013/05/1 ...

  2. Emgucv实现Unsharp Mask USM锐化算法

    USM算法是PS常用的算法,原理可以在网上看看,这样主要是实现的代码. opencv实现USM算法的代码是: void ImageSharp(Mat &src, Mat &dst, i ...

  3. OpenCV实现USM锐化

    OpenCV实现USM锐化 [转]http://www.programdevelop.com/4964391/ USM (Unsharp masking) is a common operation ...

  4. 【剑桥摄影协会】Photoshop中的USM算法(Unsharp Mask)

    本文介绍的内容为Photoshop中的图像锐化算法,USM-Unsharp Mask算法.这个算法的英文名字有些自相矛盾,既然是锐化算法,却命名为Unsharp,主要还是因为其算法的实现思路,有别于传 ...

  5. OpenCV图像锐化---USM锐化和Laplace锐化

    学更好的别人, 做更好的自己. --<微卡智享> 本文长度为1832字,预计阅读4分钟 前言 图像锐化 (image sharpening) 是补偿图像的轮廓,增强图像的边缘及灰度跳变的部 ...

  6. 【OpenCV】35 USM锐化增强算法

    35 USM锐化增强算法 代码 import cv2 as cv import numpy as npsrc = cv.imread("../images/master.jpg") ...

  7. 图像USM锐化opencv

    高斯+addWeighted GaussianBlur( InputArray src, OutputArray dst, Size ksize, double sigmaX, double sigm ...

  8. OpenCV4图像处理--USM锐化

    USM锐化 图像锐化增强 图像锐化增强 USM(Unsharp Mask)原理 两种颜色相交时,不改变颜色本身,而只是将其交线变得清楚一些,可使图像看起来更清晰,这正是人眼的一种观察特征.采用照相制版 ...

  9. Halcon之图像梯度、图像边缘、USM锐化

    图像梯度.图像边缘.USM锐化图像梯度.图像边缘.USM锐化图像梯度.图像边缘.USM锐化 图像卷积: 1.模糊 2.梯度 3.边缘 4.锐化 1.视频教程: B站.网易云课堂.腾讯课堂 2.代码地址 ...

  10. 图像处理之USM锐化

    一:基本原理 图像卷积处理实现锐化有一种常用的算法叫做Unsharpen Mask方法,这种锐化的方法就是对原图像先做一个高斯模糊,然后用原来的图像减去一个系数乘以高斯模糊之后的图像,然后再把值Sca ...

最新文章

  1. 关于学习Python的一点学习总结(20->assert判断->while和for使用)
  2. 虚拟实验室中的事务管理系统(一、概述)
  3. Perl学习笔记(2)
  4. 我所理解的设计模式(C++实现)——策略模式(Strategy Pattern)
  5. 2014年工作中遇到的20个问题:120-140
  6. 这6种性格的人不适合做数据分析
  7. ES5-14 【utils】三目运算符、对象克隆、浅拷贝、深拷贝
  8. 根据id 隐藏_明星ID价值四位数?吃鸡玩家崩溃:打工一个月工资还没名称值钱...
  9. c# 审批流引擎_小熊OA:流程引擎才能真正起到管理价值!
  10. birt 报表设计(2)—介绍
  11. 农行支付php,ECSHOP教程:农行支付接口开发(含手机端)
  12. [Java集合源码阅读]-ArrayList扩容机制
  13. Andro - Multipurpose OpenCart 2.X 自适应主题模板 ABC-0651
  14. 安全攻防六:SQL注入,明明设置了强密码,为什么还会被别人登录
  15. WinCC 扇形旋转制作
  16. 人工智能应用案例——智能客服
  17. GIT提交代码到远程创库
  18. Canceling statement due to conflict with reco
  19. 冯俪 | 成为最好的你,才最有魅力!
  20. 极客日报:微信正式宣布开放外部链接;iPhone13预购开启导致苹果官网崩了;特斯拉将向车主提供新版 FSD

热门文章

  1. 使用telnet方式管理交换机
  2. 变分法模型的运用:生产设备的最大经济效益
  3. button run clicked becomes grey Android studio运行按钮变灰
  4. 这么清晰的帮助手册,AppCube 二次体验
  5. python中sticky_position: sticky 详解(防坑指南)
  6. excel中插入的图表保存时提示 无法保存 html,Excel技巧:将图表另存为GIF文件
  7. L1-009 N个数求和 (20 分)(C语言)(测试点3和测试点5)
  8. 身份证号码中出生年月的提取
  9. Android学习日记(yzy):通过自定义View实现新手指导功能(蒙板效果)
  10. git stach储藏功能(SourceTree 使用方法,Visual studio 2019 中使用