Q17:laplacian滤波

laplacian 是边缘检测的一种,算子如下

代码如下

#include"opencv2/core/core.hpp"
#include"opencv2/highgui/highgui.hpp"
#include<opencv2/opencv.hpp>
#include "math.h"
#include"iostream"
using namespace std;
using namespace cv;
#define Kernel_size 3
Mat laplacian3(Mat img){//构建3*3滤波系数矩阵double K[Kernel_size][Kernel_size] = {{0,1,0},{1,-4,1},{0,1,0}};  int imgrow = img.rows;int imgcol = img.cols;Mat out = Mat::zeros(imgrow,imgcol,CV_8UC1);int dot = floor((float)(Kernel_size/2));int v;for(int i=floor((float)(Kernel_size/2));i<imgrow-floor((float)(Kernel_size/2));i++){for(int j=floor((float)(Kernel_size/2));j<imgcol-floor((float)(Kernel_size/2));j++){v = 0;for(int i_=-dot;i_<dot+1;i_++){for(int j_=-dot;j_<dot+1;j_++){v += img.at<uchar>(i+i_,j+j_)*K[i_+dot][j_+dot];}}if(v>=0)out.at<uchar>(i,j) = v;elseout.at<uchar>(i,j) = -v;}}return out;
}
void main(){Mat img = imread("ck567.jpg",IMREAD_GRAYSCALE);Mat out1 = laplacian3(img);imshow("laplacian3",out1);                                                                                                             imshow("original-pic",img);waitKey(0);destroyAllWindows();
}

效果如下

Q18:Emboss滤波

算子如下

代码如下

#include"opencv2/core/core.hpp"
#include"opencv2/highgui/highgui.hpp"
#include<opencv2/opencv.hpp>
#include "math.h"
#include"iostream"
using namespace std;
using namespace cv;
#define Kernel_size 3
Mat emboss3(Mat img){//构建3*3滤波系数矩阵double K[Kernel_size][Kernel_size] = {{-2,-1,0},{-1,1,1},{0,1,2}};  int imgrow = img.rows;int imgcol = img.cols;Mat out = Mat::zeros(imgrow,imgcol,CV_8UC1);int dot = floor((float)(Kernel_size/2));int v;for(int i=floor((float)(Kernel_size/2));i<imgrow-floor((float)(Kernel_size/2));i++){for(int j=floor((float)(Kernel_size/2));j<imgcol-floor((float)(Kernel_size/2));j++){v = 0;for(int i_=-dot;i_<dot+1;i_++){for(int j_=-dot;j_<dot+1;j_++){v += img.at<uchar>(i+i_,j+j_)*K[i_+dot][j_+dot];}}if(v>=0)out.at<uchar>(i,j) = v;elseout.at<uchar>(i,j) = -v;}}return out;
}
void main(){Mat img = imread("ck567.jpg",IMREAD_GRAYSCALE);Mat out1 = emboss3(img);imshow("emboss3",out1);                                                                                                             imshow("original-pic",img);waitKey(0);destroyAllWindows();
}

效果如下

Q19:Log滤波

Log滤波又称为高斯-拉普拉斯滤波,先进行高斯平滑在进行拉氏滤波,其中高斯平滑的公式为log的定义式。

代码如下

#include"opencv2/core/core.hpp"
#include"opencv2/highgui/highgui.hpp"
#include<opencv2/opencv.hpp>
#include "math.h"
#include"iostream"
using namespace std;
using namespace cv;
#define M_PI 3.14159265358979323846
#define Kernel_size 5
#define sigma 3
Mat Log_filter(Mat img){//构建3*3滤波系数矩阵double K[Kernel_size][Kernel_size];  int imgrow = img.rows;int imgcol = img.cols;Mat out = Mat::zeros(imgrow,imgcol,CV_8UC1);int dot = floor((float)(Kernel_size/2));double Sum = 0;int x = 0;int y = 0;for(int i=0;i<Kernel_size;i++){for(int j=0;j<Kernel_size;j++){x = j-dot;y = i-dot;K[i][j] = (x*x+y*y-sigma*sigma)/(2*M_PI*pow((double)sigma,6))*exp((-(x*x+y*y)/(2*sigma*sigma))*1.0);Sum += K[i][j];}}for(int i=0;i<Kernel_size;i++){for(int j=0;j<Kernel_size;j++){K[i][j] /= Sum;}}int v;for(int i=floor((float)(Kernel_size/2));i<imgrow-floor((float)(Kernel_size/2));i++){for(int j=floor((float)(Kernel_size/2));j<imgcol-floor((float)(Kernel_size/2));j++){v = 0;for(int i_=-dot;i_<dot+1;i_++){for(int j_=-dot;j_<dot+1;j_++){v += img.at<uchar>(i+i_,j+j_)*K[i_+dot][j_+dot];}}if(v>=0)out.at<uchar>(i,j) = v;elseout.at<uchar>(i,j) = -v;}}return out;
}
void main(){Mat img = imread("ck567.jpg",IMREAD_GRAYSCALE);Mat out1 = Log_filter(img);imshow("Log_filter",out1);                                                                                                             imshow("original-pic",img);waitKey(0);destroyAllWindows();
}

效果如下

opencv学习17-19——laplacian滤波,Emboss滤波,Log滤波相关推荐

  1. OpenCV学习笔记(三十六)——Kalman滤波做运动目标跟踪 OpenCV学习笔记(三十七)——实用函数、系统函数、宏core OpenCV学习笔记(三十八)——显示当前FPS OpenC

    OpenCV学习笔记(三十六)--Kalman滤波做运动目标跟踪 kalman滤波大家都很熟悉,其基本思想就是先不考虑输入信号和观测噪声的影响,得到状态变量和输出信号的估计值,再用输出信号的估计误差加 ...

  2. OpenCV学习笔记(二十一)——绘图函数core OpenCV学习笔记(二十二)——粒子滤波跟踪方法 OpenCV学习笔记(二十三)——OpenCV的GUI之凤凰涅槃Qt OpenCV学习笔记(二十

    OpenCV学习笔记(二十一)--绘图函数core 在图像中,我们经常想要在图像中做一些标识记号,这就需要绘图函数.OpenCV虽然没有太优秀的GUI,但在绘图方面还是做得很完整的.这里就介绍一下相关 ...

  3. opencv学习笔记19:图像金字塔和图像拉普拉斯金字塔 (用于图像放大和缩小)

    图像金字塔原理 图像金字塔:只不同分辨率,不同尺寸子图构成的集合. 取样 向下取样:有一个图像G0,对它重新采样,得到分辨率小些的G1,以此类推. 向上取样:有一个图像G3,然后变成像素更多的G2,以 ...

  4. OpenCV学习(17) 细化算法(5)

    本章我们看下Pavlidis细化算法,参考资料http://www.imageprocessingplace.com/downloads_V3/root_downloads/tutorials/con ...

  5. opencv学习17——油画效果

    一.算法描述 图像油画效果 1.类似于马赛克及毛玻璃效果,也是卷积操作的一种 2.基本原理:将在计算某点像素值时,通过计算周围区域的某些像素值得到本点像素值 1)分别读取彩色图.灰度图,将灰度全值(0 ...

  6. 【youcans 的 OpenCV 学习课】7. 空间域图像滤波

    专栏地址:『youcans 的图像处理学习课』 文章目录:『youcans 的图像处理学习课 - 总目录』 [youcans 的 OpenCV 学习课]7. 空间域图像滤波 图像滤波是在尽可能保留图像 ...

  7. 36篇博文带你学完opencv :python3+opencv学习笔记汇总目录(基础版)

    经过几天的学习,opencv基础部分学习完啦.整理出来. OpenCV opencv学习笔记1:图片读入,显示与保存(有代码) opencv学习笔记2:图像处理基础 opencv学习笔记3:像素处理 ...

  8. opencv学习笔记22:傅里叶变换,高通滤波,低通滤波

    傅里叶变换原理 任何连续的周期信号,都可以由一组适当的正弦曲线组合而成. 下列左上图由其他三图构成. 左图经过傅里叶变换,由时域图转换到频域图.相互可逆 相位:不是同时开始的一组余弦函数,在叠加时要体 ...

  9. opencv学习笔记11:图像滤波(均值,方框,高斯,中值)

    为什么要使用滤波 消除图像中的噪声成分叫作图像的平滑化或滤波操作.信号或图像的能量大部分集中在幅度谱的低频和中频段是很常见的,而在较高频段,感兴趣的信息经常被噪声淹没.因此一个能降低高频成分幅度的滤波 ...

最新文章

  1. [转]Linux文件搜索
  2. Tensorflow学习笔记2:About Session, Graph, Operation and Tensor
  3. kindle词典_kindle盖泡面是什么梗?kindle官方盖章泡面盖子 网友:定位准确
  4. C#序列化和反序列化
  5. [css] 用CSS绘制一个红色的爱心
  6. Redis数据类型使用场景及有序集合SortedSet底层实现详解
  7. Use JPA API
  8. c语言 程序结集,c语言(结体程序设计).doc
  9. mac下多个php版本快速切换的方法
  10. springboot怎么返回404_自定义SpringBoot REST API 404返回信息
  11. 多媒体个人计算机硬件,A.对个人计算机增加多媒体功能所需软硬件进行最低标准.PDF...
  12. 彻底关闭弹出广告“FF新推荐”
  13. COPY 一种接近最优的导航网格生成算法以及基于导航网格的寻路算法
  14. 汉语语法与人工智能---数据结构+汉语语法
  15. css 3d环形,CSS3 飞行的3D圆环
  16. 卷积神经网络学习路线(十三)| CVPR2017 Deep Pyramidal Residual Networks
  17. 轻松查询多个中通速递发出物流中含有某个城市的单号
  18. 河北省对口升学计算机专业学校,河北省对口升学计算机专业试题详解
  19. slot 游戏 demo
  20. 乔纳森·艾维:iPhoneX准备了五年,苹果仍在不断创新

热门文章

  1. Back-off pulling image registry.access.redhat.com/rhel7/pod-infrastructure:latest
  2. python教程:获取中位数的最佳方法
  3. JAVA Day1课件及分析
  4. 【超详细Python教学课件分享】寻宝探路
  5. ORA-27101: shared memory realm does not exist
  6. 【一周读书】《把时间当作朋友》《一个人就是一支骑兵》读书心得
  7. Objective-C 基础教程——入门
  8. python创建变量revenue、并赋值为98765_Python序列与文件编程练习
  9. 解决mybatis不加@Parm注解报错问题
  10. android中 拍照 视频 录音 显示缩略图