OpenCV:图像锐化
目录
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_16S
,CV_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:图像锐化相关推荐
- OpenCV图像锐化/增强
OpenCV图像锐化/增强 0.综述 1.Laplacian高通滤波算子 2.Laplacian锐化代码实践 3.USM锐化增强算法 4.USM代码实践 0.综述 图像的卷积计算除了可以完成我们前面介 ...
- OpenCV图像锐化---USM锐化和Laplace锐化
学更好的别人, 做更好的自己. --<微卡智享> 本文长度为1832字,预计阅读4分钟 前言 图像锐化 (image sharpening) 是补偿图像的轮廓,增强图像的边缘及灰度跳变的部 ...
- OpenCv图像锐化及各种高通滤波
目录 什么是图像锐化以及为什么要进行图像锐化 图像锐化的方法 1.空域滤波的可使用几种方法 1.1梯度法 1.2拉普拉斯算子法 1.3定向滤波法 2.频域方面的高通滤波 2.1理想高通滤波器 2.2巴 ...
- Python 计算机视觉(十)—— OpenCV 图像锐化及边缘检测
参考的一些文章以及论文我都会给大家分享出来 -- 链接就贴在原文,论文我上传到资源中去,大家可以免费下载学习,如果当天资源区找不到论文,那就等等,可能正在审核,审核完后就可以下载了.大家一起学习,一起 ...
- OpenCV图像锐化(梯度算子Sobel)
梯度算子 • 梯度通过一个二维列向量来定义 • 向量的模值 实践中通常称为梯度图像. • 考虑一个3x3的图像区域,z代表 灰度级,上式在点z5的f值可用 数字方式近似. • 微分滤波器 ...
- OpenCV图像处理 空间域图像增强(图像锐化 1 基于拉普拉斯算子)
http://ggicci.blog.163.com/blog/static/210364096201262123236955/ OpenCV OpenCV 图像锐化 拉普拉斯算子 ( Laplaci ...
- python使用openCV图像加载(转化为灰度图像)、使用filter2D函数对图像进行锐化(Sharpen Images)
python使用openCV图像加载(转化为灰度图像).使用filter2D函数对图像进行锐化(Sharpen Images) 目录
- opencv进阶学习笔记5:图像模糊操作,图像锐化,边缘保留滤波EPF(图像滤镜)
基础版传送门: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录链接: python+opencv进阶版学习笔记目录(适合有一定基础) 模糊操作 方法:均值模糊,中值模 ...
- Opencv实战【3】——图像修复与图像锐化(darling in the franxx)
目录 前言 图像修复 图像锐化 darling in the franxx图片 总结 前言 前天,在群里看见有人发了这张表情包: 感觉女主有点好看,然后问室友是啥番剧(darling in the f ...
- 【OpenCV 例程200篇】65. 图像锐化——Scharr 算子
[OpenCV 例程200篇]65. 图像锐化--Scharr 算子 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 ...
最新文章
- c# 非阻塞算法_c#创建非阻塞tcp通信
- ios自动布局(1)
- wpcap包含目录如何在2010中进行全局设置
- 弹出显示多条的message对话框
- mysql百万数据根据索引查询_mysql创建多列索引查询百万表数据的性能优化经验分享...
- w我的页面显示服务器错误,vue项目,在本地打开一个页面正常,部署到服务器就会出现 404Not Found 求解?...
- Home键的获取监听,安卓4.0后就不能在onkeydown方法中获取了。怎么办。
- 黑客全家桶、文字提取利器、深度学习 500 问 | GitHub 热点速览
- 成为一名PHP专家其实并不难
- mysql 与 mycat集成读写分离
- 【易实战】Spring Cloud微服务架构12要素应用 Twelve‑Factor App
- JS 使用DES加密解密
- 二分类模型(清风建模学习笔记)
- 机器学习笔试面试整理
- centos8安装nginx
- 散布谣言也能实现一致性?来看看Gossip协议如何活用六度分隔理论
- 数字图像处理艺术化效果——彩色图像转化为灰度图像(黑白照片)
- GC垃圾回收—详细总结
- hrs软件在linux下如何启动,linux中进程管理的三大工具及进程查看命令
- 通信原理(5)—— 数字带通传输系统(ASK/FSK/PSK/DPSK)