博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
边缘检测:laplace
阅读量:4100 次
发布时间:2019-05-25

本文共 1953 字,大约阅读时间需要 6 分钟。

laplace算子是二阶导

众所周知
f ′ ( x ) = f ( x + δ ) − f ( x ) δ ( δ 趋 于 0 的 极 限 ) f'(x)= \frac{f(x+\delta)-f(x)}{\delta}(\delta趋于0的极限) f(x)=δf(x+δ)f(x)(δ0)
而与 δ \delta δ趋于0的方式无关,可以大于0趋于0,可以小于0趋于0,甚至可以震荡趋于0,而图像是离散的,所以求导也只能近似代替
比如取 δ = 1 或 者 − 1 \delta=1或者-1 δ=11
f ′ ( x ) = f ( x + 1 ) − f ( x ) f'(x)=f(x+1)-f(x) f(x)=f(x+1)f(x)或者 f ′ ( x ) = f ( x ) − f ( x − 1 ) f'(x)=f(x)-f(x-1) f(x)=f(x)f(x1)
此时二阶导 f ′ ′ ( x ) = f ′ ( x + 1 ) − f ′ ( x ) = f ( x + 1 ) − f ( x ) − f ( x ) + f ( x − 1 ) f''(x)=f'(x+1)-f'(x)=f(x+1)-f(x)-f(x)+f(x-1) f(x)=f(x+1)f(x)=f(x+1)f(x)f(x)+f(x1)(第一次选择 δ \delta δ大于0趋于0,后一个两个均选择小于0趋于0,至于为啥这样做,感觉是为了对称性,或者是同一个方向累积的话误差会变大比如 f ′ ′ ( x ) = f ′ ( x + 1 ) − f ′ ( x ) = f ( x + 2 ) − f ( x + 1 ) − f ( x + 1 ) + f ( x ) f''(x)=f'(x+1)-f'(x)=f(x+2)-f(x+1)-f(x+1)+f(x) f(x)=f(x+1)f(x)=f(x+2)f(x+1)f(x+1)+f(x)显然太偏了)

计算方式确定后,核就定了,计算就是卷积比较简单

#include
#include
using namespace std;using namespace cv;void BGR2Gray(Mat src, Mat &grayPic){
for (int i = 0; i < src.rows; i++) {
for (int j = 0; j < src.cols; j++) {
//Gray = R*0.299 + G*0.587 + B*0.114 grayPic.at
(i, j) = src.at
(i, j)[0] * 0.114 + src.at
(i, j)[1] * 0.587 + src.at
(i, j)[2] * 0.299; } }}void mylaplace(int lp[][3], Mat src, Mat out){ for (int i = 1; i < src.rows-1; i++) { for (int j = 1; j < src.cols-1; j++) { int tmp = 0; for (int i1 = -1; i1 <= 1; i1++) { for (int i2 = -1; i2 <= 1; i2++) { tmp += lp[1 + i1][1 + i2] * src.at
(i + i1, j + i2); } } if (tmp > 255) tmp = 255; if (tmp < 0) tmp = 0; out.at
(i, j) = tmp; } }}int main(){ int lp[3][3] = { 0, 1, 0, 1, -4, 0, 0, 1, 0 }; int lp2[3][3]= { 1, 1, 1, 1, -8, 1, 1, 1, 1 }; Mat pic = imread("C:\\Users\\Thinkpad\\Desktop\\c++work\\pic\\lena.jpg", 1); Mat src = Mat::zeros(pic.rows, pic.cols, CV_8UC1); Mat out = src.clone(); BGR2Gray(pic, src); mylaplace(lp2, src, out); imshow("1", out); waitKey(); return 0;}

转载地址:http://vwksi.baihongyu.com/

你可能感兴趣的文章
最受欢迎的前端框架Bootstrap 入门
查看>>
JavaScript编程简介:DOM、AJAX与Chrome调试器
查看>>
通过Maven管理项目依赖
查看>>
通过Spring Boot三分钟创建Spring Web项目
查看>>
Spring的IoC(依赖注入)原理
查看>>
Guava快速入门
查看>>
Java编程基础:static的用法
查看>>
Java编程基础:抽象类和接口
查看>>
Java编程基础:异常处理
查看>>
Spring MVC中使用Thymeleaf模板引擎
查看>>
Spring处理表单提交
查看>>
Spring MVC异常处理
查看>>
Leetcode 1180. Count Substrings with Only One Distinct Letter [Python]
查看>>
PHP 7 的五大新特性
查看>>
php实现socket(转)
查看>>
PHP底层的运行机制与原理
查看>>
深入了解php底层机制
查看>>
PHP中的stdClass 【转】
查看>>
XHProf-php轻量级的性能分析工具
查看>>
PHP7新特性 What will be in PHP 7/PHPNG
查看>>