OpenCV图像处理 空间域图像增强(图像锐化 1 基于拉普拉斯算子)
- http://ggicci.blog.163.com/blog/static/210364096201262123236955/
- OpenCV
- OpenCV 图像锐化
- 拉普拉斯算子 ( Laplacian operator )
Quote :
It is indeed a well-known result in image processing that if you subtract its Laplacian from an image, the image edges are amplified giving a sharper image. [From OpenCV 2 Computer Vision Application Programming Cookbook]
- 对于求一个锐化后的像素点(sharpened_pixel),这个基于拉普拉斯算子的简单算法主要是遍历图像中的像素点,根据领域像素确定其锐化后的值
- 计算公式:sharpened_pixel = 5 * current – left – right – up – down ; [见Code1]
- 当一个运算是通过领域像素进行的时候,我们通常用一个矩阵来表示这种运算关系,也就是我们经常所说的 核 (Kernel) 。那么上面的 锐化滤波器 (Sharpening Filter) 就可以用这个矩阵表示为它的核:
-1 | ||
-1 | 5 | -1 |
-1 |
- 因为 滤波 在图像处理中是一个非常普通且常用的操作,所以OpenCV里面已经定义了一个特殊的函数用来执行这个操作。要使用它的话只需要定义一个 核 ,然后作为参数传递就行了。[见Code2]
Code 1 :
/*Author : GgicciDate : 2012.07.19File : sharp.h*/#pragma once#include <opencv\cv.h>using namespace cv;namespace ggicci{void sharpen(const Mat& img, Mat& result);}/*Author : GgicciDate : 2012.07.19File : sharp.cpp*/#include "sharp.h"void ggicci::sharpen(const Mat& img, Mat& result){result.create(img.size(), img.type());//处理边界内部的像素点, 图像最外围的像素点应该额外处理for (int row = 1; row < img.rows-1; row++){//前一行像素点const uchar* previous = img.ptr<const uchar>(row-1);//待处理的当前行const uchar* current = img.ptr<const uchar>(row);//下一行const uchar* next = img.ptr<const uchar>(row+1);uchar *output = result.ptr<uchar>(row);int ch = img.channels();int starts = ch;int ends = (img.cols - 1) * ch;for (int col = starts; col < ends; col++){//输出图像的遍历指针与当前行的指针同步递增, 以每行的每一个像素点的每一个通道值为一个递增量, 因为要考虑到图像的通道数*output++ = saturate_cast<uchar>(5 * current[col] - current[col-ch] - current[col+ch] - previous[col] - next[col]);}} //end loop//处理边界, 外围像素点设为 0result.row(0).setTo(Scalar::all(0));result.row(result.rows-1).setTo(Scalar::all(0));result.col(0).setTo(Scalar::all(0));result.col(result.cols-1).setTo(Scalar::all(0));}/*Author : GgicciDate : 2012.07.19File : main.cpp*/#include <opencv\highgui.h>#pragma comment(lib, "opencv_core231d.lib")#pragma comment(lib, "opencv_highgui231d.lib")#pragma comment(lib, "opencv_imgproc231d.lib")using namespace cv;#include "sharp.h"int main(){Mat lena = imread("lena.jpg");Mat sharpenedLena;ggicci::sharpen(lena, sharpenedLena);imshow("lena", lena);imshow("sharpened lena", sharpenedLena);cvWaitKey();return 0;}
Code 2 :
1: int main()2: {3: Mat lena = imread("lena.jpg");4: Mat sharpenedLena;5: Mat kernel = (Mat_<float>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);6: cv::filter2D(lena, sharpenedLena, lena.depth(), kernel);7:8: imshow("lena", lena);9: imshow("sharpened lena", sharpenedLena);10: cvWaitKey();11: return 0;12: }
OpenCV图像处理 空间域图像增强(图像锐化 1 基于拉普拉斯算子)相关推荐
- 数字图像处理-空间域图像增强(一)(图像反转,对数变换,幂次变换、分段线性变换)
空间域增强的第一部分:图像反转,对数变换,幂次变换.分段线性变换 (s:现点值,r: 原点值) 图像反转: 这个无需多说,就是把黑变白,白变黑,拿八位灰度图像来说 表达式:s=255-r 作用:看清暗 ...
- 【OpenCV 例程200篇】67. 空间域图像增强的综合应用
[OpenCV 例程200篇]67. 空间域图像增强的综合应用 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 5. ...
- 数字图像处理——第三章 空间域图像增强(灰度变换和直方图处理)
文章目录 空间域图像增强 1. 背景知识 2. 基本灰度变换 2.1 图像反转 2.2 对数变换 2.3 幂次变换 2.4 分段线性变换函数 2.4.1 对比拉伸 2.4.2 灰度切割 2.4.3 位 ...
- 图像处理-空间域锐化滤波
个人博客:http://www.chenjianqu.com/ 原文链接:http://www.chenjianqu.com/show-14.html 目录: 1.前言 2.锐化滤波 3.Robe ...
- 数字图像处理系列(二)---空间域图像增强-点运算
chapter2 空间域图像增强(点增强) 1.图像增强的基本概念 在不考虑图像降质的情况下,通过经验和试探的方法,把图像感兴趣的部分进行选择性突出,而把不在意的部分进行压制,从而得到我们想要的信息. ...
- 图像处理基本算法之空间域图像增强
图像增强技术根据增强处理过程所在的空间不同,可分为基于频域的算法和基于空域的算法两大类.基于频域的算法是在图像的某种变换域内对图像的变换系数值进行某种修正,是一种间接增强的算法,把图像看成一种二维信号 ...
- [Python从零到壹] 五十八.图像增强及运算篇之图像锐化Sobel、Laplacian算子实现边缘检测
欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...
- 循序渐进之(五)空间域图像增强之自适应直方图均衡化(AHE)
循序渐进之(五)空间域图像增强之自适应直方图均衡化(AHE) 文字摘自:对比度受限的自适应直方图均衡化(CLAHE) 直方图均衡化(HE)是一种很常用的直方图类方法,基本思想是通过图像的灰度分布直方图 ...
- [Python从零到壹] 五十七.图像增强及运算篇之图像锐化Roberts、Prewitt算子实现边缘检测
欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...
最新文章
- flask sqlalchemy踩坑记录
- LayoutInflater的inflate函数用法详解
- 无法访问linux mysql_远程无法访问linux Mysql解决方案(转)
- java为何重复调用方法_通过反射调用Java中的getter:重复调用它的最快方法是什么(在性能和可伸缩性方面)?...
- Python爬虫爬取美剧网站
- webpack+react+es6开发模式
- php高德地图坐标在多边形,多边形的绘制和编辑
- “朝阳群众”APP上线!解读怎么做一款深入群众的应用
- ASP.NET Web API 提升性能的方法实践
- BetterScroll、移动端、滚动事件,如何使用
- C#窗体控件-文本框控件TextBox
- 游戏鼠标的dpi测试软件,有什么软件可以测试鼠标的dpi或着说cpi – 手机爱问
- Magnific Popup – 免费的响应式 jQuery Lightbox 插件
- 狭义相对论推导过程中的数学悖论--有没有人能解释下?
- Sunshine 项目构思
- Python pgm解析和格式转换
- html写信模板,求给签证官写信的模板。。。
- cloopen(cloopen limited)
- Android学习日记(yzy):SQLite数据库和baseAdapter
- jquery 校验中国身份证号码
热门文章
- 微信小程序:canvas实现图片压缩
- 第一章 Hadoop
- 生日快乐python编程代码_如何用C语言编写一个很炫的生日快乐的程序?
- python贪吃蛇程序_Python 实现 贪吃蛇大作战 代码分享
- Hyper_端对端LPR_DNN_源码解析
- 初中计算机科目三必背,科目三实用十句口诀,临考提分必背!建议收藏
- HTML + CSS 学习
- ‘vue-cli-service‘ is not recognized as an internal or external command
- 人脸识别的关键技术及原理
- mysql Pxc工作原理_浅谈MySQL-PXC架构