目录

1.简介

2.滤波

2.1 Sobel算子

1.Sobel输出类型为CV_8U

2.Sobel输出类型为CV_16S

2.2 Laplacian算子

1.没有高斯平滑的拉普拉斯算子

2.高斯平滑后的拉普拉斯算子-LoG算子

2.3 Roberts算子


sobel cv::Sobel()
laplacian

cv::Laplacian()

Mat数据类型转换 convertTo()

1.简介

边缘定义为图像中亮度突变的区域,可以利用微分方法去检测图像中的边缘。在图像处理中最常用的应用微分方法就是计算梯度(方向导数取最大值的方向的向量)。

图像为离散的数字矩阵,因此用差分代替微分,得到梯度图像。梯度图像反映的是图像中灰度级的变化,边缘检测需要进一步判断梯度图像中的特殊点。

图像锐化的目的是加强图像中景物的边缘与轮廓,突出图像中的细节或者增强被模糊了的细节。实质是将原图像和梯度图像相加,以增强图中的变化。

2.滤波

2.1 Sobel算子

先加权平滑,再做微分运算。Sobel算子引入平均元素,对图像中随机噪声有一定的平滑作用,但不能完全排除虚假边缘,检测出的边缘容易出现多像素宽度。

详情:Sobel算子  Mat数据类型及转换

void Sobel (InputArray src,//输入图OutputArray dst,//输出图int ddepth,//输出图像的深度int dx,int dy,int ksize=3,double scale=1,double delta=0,int borderType=BORDER_DEFAULT );

主要在ddepth的理解上

- 若src.depth() = CV_8U, 取ddepth =-1/CV_16S/CV_32F/CV_64F
- 若src.depth() = CV_16U/CV_16S, 取ddepth =-1/CV_32F/CV_64F
- 若src.depth() = CV_32F, 取ddepth =-1/CV_32F/CV_64F
- 若src.depth() = CV_64F, 取ddepth = -1/CV_64F
ddepth =-1时,代表输出图像与输入图像相同的深度。

黑色到白色的过渡被视为正斜率(具有正值),而白色到黑色的过渡被视为负斜率(具有负值)。输出设置为CV_8U会丢失负值。如果要检测两个边缘,更好的选择是将输出数据类型保留为更高的形式,例如CV_16SCV_64F等,取其绝对值,然后转换回CV_8U。 

1.Sobel输出类型为CV_8U

    Mat dst1;Mat dst2;Sobel(image, dst1, -1, 1, 0);#CV_8Uimshow("Gx", dst1);Sobel(image, dst2, -1, 0, 1);imshow("Gy", dst2);add(abs(dst1), abs(dst2), out);imshow("梯度图像", out);add(image,out,out);imshow("锐化图像", out);

2.Sobel输出类型为CV_16S

    cout << image.depth() << endl;Mat dst1;Mat dst2;Sobel(image, dst1, CV_16S, 1, 0);Sobel(image, dst2, CV_16S, 0, 1);dst1=abs(dst1);dst2=abs(dst2);add(dst1, dst2, out);cout << out.depth() << endl;out.convertTo(out, CV_8U);imshow("梯度图像", out);add(image,out,out);imshow("锐化图像", out);dst1.convertTo(dst1, CV_8U);imshow("Gx", dst1);dst2.convertTo(dst2, CV_8U);imshow("Gy", dst2);

 

2.2 Laplacian算子

详情:Laplacian()函数

二阶微分算子,对噪声敏感,不能检测边缘的方向。容易丢失一部分边缘的方向信息,造成一些不连续的检测边缘。

    //GaussianBlur(image, image, Size(3, 3), 0);Laplacian(image, out, CV_16S, 3);out.convertTo(out, CV_8U);imshow("梯度图像", out);add(image, out, out);imshow("锐化图像", out);

1.没有高斯平滑的拉普拉斯算子

 

2.高斯平滑后的拉普拉斯算子-LoG算子

2.3 Roberts算子

通过交叉微分检测局部变化,边缘定位精度较高,但容易丢失一部分边缘。由于图像没经过平滑处理,因此不具备能抑制噪声能力,对陡峭边缘且含噪声少的图像效果较好。用模板做的。

#include<opencv2/opencv.hpp>
#include<iostream>
#include<imgproc.hpp>
using namespace cv;
using namespace std;int main(int argc, char** argv) {Mat image = imread("C:/Users/YY/Pictures/Saved Pictures/frose.jpg");Mat out;imshow("原图", image);Mat k1 = (Mat_<double>(2, 2) << 1, 0, 0, -1);Mat k2 = (Mat_<double>(2, 2) << 0, 1, -1, 0);Mat dst1;Mat dst2;filter2D(image, dst1, -1,k1);//输出类型CV_8Ufilter2D(image, dst2, -1, k2);add(abs(dst1), abs(dst2), out);imshow("梯度图像", out);add(image,out,out);imshow("锐化图像", out);waitKey(0);destroyAllWindows();return 0;
}

同样更改输出类型为CV_16S,结果如下:

    filter2D(image, dst1, CV_16S, k1);filter2D(image, dst2, CV_16S, k2);add(abs(dst1), abs(dst2), out);out.convertTo(out, CV_8U);imshow("梯度图像", out);

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. c# 非阻塞算法_c#创建非阻塞tcp通信
  2. ios自动布局(1)
  3. wpcap包含目录如何在2010中进行全局设置
  4. 弹出显示多条的message对话框
  5. mysql百万数据根据索引查询_mysql创建多列索引查询百万表数据的性能优化经验分享...
  6. w我的页面显示服务器错误,vue项目,在本地打开一个页面正常,部署到服务器就会出现 404Not Found 求解?...
  7. Home键的获取监听,安卓4.0后就不能在onkeydown方法中获取了。怎么办。
  8. 黑客全家桶、文字提取利器、深度学习 500 问 | GitHub 热点速览
  9. 成为一名PHP专家其实并不难
  10. mysql 与 mycat集成读写分离
  11. 【易实战】Spring Cloud微服务架构12要素应用 Twelve‑Factor App
  12. JS 使用DES加密解密
  13. 二分类模型(清风建模学习笔记)
  14. 机器学习笔试面试整理
  15. centos8安装nginx
  16. 散布谣言也能实现一致性?来看看Gossip协议如何活用六度分隔理论
  17. 数字图像处理艺术化效果——彩色图像转化为灰度图像(黑白照片)
  18. GC垃圾回收—详细总结
  19. hrs软件在linux下如何启动,linux中进程管理的三大工具及进程查看命令
  20. 通信原理(5)—— 数字带通传输系统(ASK/FSK/PSK/DPSK)

热门文章

  1. Elasticsearch安装拼音分词器插件
  2. Windows安装--拼音分词器
  3. 开发步骤_社交app开发步骤,送给不懂app开发的你
  4. 高速列车横向17自由度模型
  5. 下载神器aria2的yaaw WebUI用法
  6. win7磁盘合并步骤
  7. 计算机表格怎么添加单下划线,如何在excel表格中添加并设置下划线
  8. 进位位判别法_判断加减法溢出时,可采用判断进位的方式,如果符号位的进位为C...
  9. opencv imwrite 之后与imread 图片变小原因与总结
  10. ibatis iterator list 参数 查询