作者:翟天保Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处

实现原理

图像锐化(image sharpening)是补偿图像的轮廓,增强图像的边缘及灰度跳变的部分,使图像变得清晰,分为空间域处理和频域处理两类。图像锐化是为了突出图像上地物的边缘、轮廓,或某些线性目标要素的特征。这种滤波方法提高了地物边缘与周围像元之间的反差,因此也被称为边缘增强。

锐化可通过拉普拉斯算子实现。拉普拉斯算子作为一个常见的二阶微分算子,放在二维图像中可以表示为:

其x方向相当于:获取x+1点和x点的差值d1,获取x点和x-1点的差值d2,然后d1-d2。

y方向同理。

不难看出其3*3的模板为:

若考虑将模板45°旋转并叠加,还可得到:

基于上述原理,进行C++代码实现。

功能函数代码

// 图像锐化
cv::Mat Sharpen(cv::Mat input, int percent, int type)
{cv::Mat result;cv::Mat s = input.clone();cv::Mat kernel;switch (type){case 0:kernel = (Mat_<int>(3, 3) <<0, -1, 0,-1, 4, -1,0, -1, 0);case 1:kernel = (Mat_<int>(3, 3) <<-1, -1, -1,-1, 8, -1,-1, -1, -1);default:kernel = (Mat_<int>(3, 3) <<0, -1, 0,-1, 4, -1,0, -1, 0);}filter2D(s, s, s.depth(), kernel);result = input + s * 0.01 * percent;return result;
}

C++测试代码

#include <iostream>
#include <opencv2/opencv.hpp>using namespace std;
using namespace cv;cv::Mat Sharpen(cv::Mat input, int percent, int type);int main()
{cv::Mat src = imread("test1.jpg");cv::Mat result1 = Sharpen(src, -50, 0);cv::Mat result2 = Sharpen(src, 50, 0);imshow("original", src);imshow("result1", result1);imshow("result2", result2);waitKey(0);return 0;
}// 图像锐化
cv::Mat Sharpen(cv::Mat input, int percent, int type)
{cv::Mat result;cv::Mat s = input.clone();cv::Mat kernel;switch (type){case 0:kernel = (Mat_<int>(3, 3) <<0, -1, 0,-1, 4, -1,0, -1, 0);case 1:kernel = (Mat_<int>(3, 3) <<-1, -1, -1,-1, 8, -1,-1, -1, -1);default:kernel = (Mat_<int>(3, 3) <<0, -1, 0,-1, 4, -1,0, -1, 0);}filter2D(s, s, s.depth(), kernel);result = input + s * 0.01 * percent;return result;
}

测试效果

图1 原图

图2 锐化-50效果图

图3 锐化100效果图

通过调整percent可以实现图像锐化程度的调整,type选择模板类型,也可自行填充更多的模板。

如果函数有什么可以改进完善的地方,非常欢迎大家指出,一同进步何乐而不为呢~

如果文章帮助到你了,可以点个赞让我知道,我会很快乐~加油!

OpenCV-图像锐化相关推荐

  1. OpenCV图像锐化/增强

    OpenCV图像锐化/增强 0.综述 1.Laplacian高通滤波算子 2.Laplacian锐化代码实践 3.USM锐化增强算法 4.USM代码实践 0.综述 图像的卷积计算除了可以完成我们前面介 ...

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

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

  3. OpenCv图像锐化及各种高通滤波

    目录 什么是图像锐化以及为什么要进行图像锐化 图像锐化的方法 1.空域滤波的可使用几种方法 1.1梯度法 1.2拉普拉斯算子法 1.3定向滤波法 2.频域方面的高通滤波 2.1理想高通滤波器 2.2巴 ...

  4. Python 计算机视觉(十)—— OpenCV 图像锐化及边缘检测

    参考的一些文章以及论文我都会给大家分享出来 -- 链接就贴在原文,论文我上传到资源中去,大家可以免费下载学习,如果当天资源区找不到论文,那就等等,可能正在审核,审核完后就可以下载了.大家一起学习,一起 ...

  5. OpenCV图像锐化(梯度算子Sobel)

    梯度算子 •    梯度通过一个二维列向量来定义 •    向量的模值 实践中通常称为梯度图像. • 考虑一个3x3的图像区域,z代表 灰度级,上式在点z5的f值可用 数字方式近似. • 微分滤波器 ...

  6. OpenCV图像处理 空间域图像增强(图像锐化 1 基于拉普拉斯算子)

    http://ggicci.blog.163.com/blog/static/210364096201262123236955/ OpenCV OpenCV 图像锐化 拉普拉斯算子 ( Laplaci ...

  7. python使用openCV图像加载(转化为灰度图像)、使用filter2D函数对图像进行锐化(Sharpen Images)

    python使用openCV图像加载(转化为灰度图像).使用filter2D函数对图像进行锐化(Sharpen Images) 目录

  8. opencv进阶学习笔记5:图像模糊操作,图像锐化,边缘保留滤波EPF(图像滤镜)

    基础版传送门: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录链接: python+opencv进阶版学习笔记目录(适合有一定基础) 模糊操作 方法:均值模糊,中值模 ...

  9. Opencv实战【3】——图像修复与图像锐化(darling in the franxx)

    目录 前言 图像修复 图像锐化 darling in the franxx图片 总结 前言 前天,在群里看见有人发了这张表情包: 感觉女主有点好看,然后问室友是啥番剧(darling in the f ...

  10. 【OpenCV 例程200篇】65. 图像锐化——Scharr 算子

    [OpenCV 例程200篇]65. 图像锐化--Scharr 算子 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 ...

最新文章

  1. open python语言实现 pdf_使用python操作Pdf代码实现
  2. PE 学习(七)第七章:资源表
  3. kafka丢数据问题方案(转载+整理+汇总)
  4. 如何用python控制电脑的应用程序打不开_如果电脑中的一个应用程序打不开,点击图标没反应,能否将其强制打开...
  5. java 垃圾回收 参数_JVM实用参数(五)新生代垃圾回收
  6. 判断回文数 java_java如何判断回文数
  7. iZotope RX 9 for Mac(数字音频修复工具)
  8. winform程序制作安装包
  9. 莫言母亲的八大教育真经
  10. 如何在OTN网站下载Grid方法(Oracle RAC)
  11. 赛福基因公开课第二节《神经系统遗传病基因检测简介》
  12. PyTorch Python API:FX || Intro
  13. 25 scala 进阶
  14. codeforces 834-A. The Useless Toy
  15. 友价商城源码插件-百度链接主动提交
  16. 【C语言】N 阶矩阵的转置
  17. B.FRIENDit壁虎忍者GC03电竞椅,坐的舒服才能心无旁骛!
  18. 树模型(七):LightGBM
  19. 浙江省计算机考证发证中心
  20. 时差 频差 双星定位 matlab,一种基于双星时差频差无源定位的伪距差分方法

热门文章

  1. DataFrame.apply()
  2. 最长上升子序列模板 hdu 1087 Super Jumping! Jumping! Jumping!
  3. Silverlight实用窍门系列:71.Silverlight的Style
  4. 仿途牛旅游APP项目开发
  5. Web网站压力测试工具
  6. 《陶哲轩实分析》习题10.4.1
  7. AutoPostBack与AutoComplete介绍
  8. b站whats app
  9. 19.为什么要用异步框架,它解决什么问题?
  10. 想要拥有自己的jar包吗?------超级简单的打jar包教程~~~