学习《OpenCV 2 计算机视觉编程手册》第二章遍历图像和领域操作实例——对图像进行锐化
来源:互联网 发布:阴阳师御灵强化数据 编辑:程序博客网 时间:2024/05/16 19:20
遍历图像和领域操作实例——对图像进行锐化
对图像进行锐化,用一幅图像减去它经过拉斯滤波之后的图像,该图像的边缘部分将放大,即细节部分更加锐利,该拉普拉斯算子的计算公式:增强后的像素值=5*当前像素-左边像素-右边像素-上方像素-下方像素;
实现方法1如下:
//拉普拉斯算子:用一幅图像减去它经过拉斯滤波之后的图像,该图像的边缘部分将放大,即细节部分更加锐利,//该拉普拉斯算子的计算公式:增强后的像素值=5*current-left-right-up-down;都是像素运算void Sharpern1(const Mat &img,Mat &result){//创建一个result存入处理Img之后的图像矩阵result.create(img.size(),img.type());for (int j = 1; j < img.rows-1; j++)//处理除了第一行和最后一行之外的所有行{const uchar* pre=img.ptr<uchar>(j-1);//上一行的首地址const uchar* cur=img.ptr<uchar>(j);//当前行首地址const uchar* next=img.ptr<uchar>(j+1);//下一行//输出行的首地址uchar * output=result.ptr<uchar>(j);//当前行中每列元素(不包括第一列和最后一列)for (int i = 1; i < img.cols-1; i++){//saturate_cast<uchar>()函数是将()中的值控制中uchar范围0~255之间,超出的截断*output++=cv::saturate_cast<uchar>(5*cur[i]-pre[i]-next[i]-cur[i-1]-cur[i+1]);}}//将未处理的像素设置为0result.row(0).setTo(Scalar(0));result.row(result.rows-1).setTo(Scalar(0));result.col(0).setTo(Scalar(0));result.col(result.cols-1).setTo(Scalar(0));}实现方法2如下:
//利用Opencv自带的filter2D函数改进上面锐化函数,filter2D函数需要图像,核等作为参数//需要自己定义一个3*3的核,(大小可以改)//3*3的核 // 0 -1 0// -1 5 -1// 0 -1 0void Sharpern2D(Mat &img,Mat &result){//初始化3*3的核矩阵为0Mat kernel(3,3,CV_32FC1,cv::Scalar(0));//对核元素进行赋值kernel.at<float>(1,1)=5.0;kernel.at<float>(0,1)=-1.0;kernel.at<float>(1,0)=-1.0;kernel.at<float>(2,1)=-1.0;kernel.at<float>(1,2)=-1.0;//可直接使用Opencv自带的filter2D()函数,前提是要引用imgproc.hpp头文件,关于图像处理的cv::filter2D(img,result,img.depth(),kernel,Point(-1,-1));}
以上两个锐化函数,在main()函数中实现如下:
int main(){ Mat img=imread("img/logo.png",0);Mat result;namedWindow("原图像");imshow("原图像",img);Sharpern2D(img,result);if(!result.empty()){namedWindow("锐化图像");imshow("锐化图像",result);}waitKey();return 0;}
它们两实现的效果一样:
原图:(灰度图)
锐化之后:
0 0
- 学习《OpenCV 2 计算机视觉编程手册》第二章遍历图像和领域操作实例——对图像进行锐化
- 学习《OpenCV 2 计算机视觉编程手册》第二章---使用指针遍历图像案例
- 【openCV】对图像进行锐化
- 遍历图像和邻域操作,图像锐化
- 学习《OpenCV 2 计算机视觉编程手册》第二章存取像素值案例--椒盐噪声
- 图像编程学习笔记9——图像的锐化
- 遍历图像和领域操作
- [OpenCv2 计算机视觉编程手册] 第六章 图像滤波
- opencv实现巴特沃斯高通滤波器对指纹图像进行锐化处理
- 有关opencv的学习(4)—图像的锐化
- OpenCV-图像处理和计算机视觉
- 计算机视觉及图像图像领域people
- 《Opencv 2计算机视觉编程手册 》学习笔记 1
- Opencv学习笔记(四)--图像处理平滑,锐化操作
- opencv学习笔记(3) 锐化图像 邻域操作 ROI
- 【学习OpenCV】——2.4对图像进行平滑处理
- 用matlab 对图像进行 拉普拉斯锐化
- OpenCV(三)回归计算机视觉,对图像平滑处理
- 扩展欧几里得算法
- Hibernate_在应用程序中使用的Session的管理方案
- 学习MVC之租房网站(八)- 前台注册和登录
- samba服务配置
- poj2965
- 学习《OpenCV 2 计算机视觉编程手册》第二章遍历图像和领域操作实例——对图像进行锐化
- ecnu 丽娃河的狼人传说
- 请一定告诉孩子,为什么要读书?
- CSS3在各浏览器上的属性前缀
- Android 实现通知栏通知APP版本更新
- mysql基础(二)
- C#连接MySql和Sql数据库
- startx 及xinit 介绍
- Apache Commons 工具类介绍及简单使用