并行边缘检测
来源:互联网 发布:族谱排版软件 编辑:程序博客网 时间:2024/06/10 11:48
基本原理
一阶微分算子(即梯度算子)利用灰度一阶导数的信息完成幅图像边缘的检测。代表Roberts,Kirsch,Prewitt,Sobel,Isotropic Sobel,Robinson,Frei,Chen等。
计算一阶梯度,选取阀值,灰度梯度幅值大于阀值处点作为阶跃状边缘点检出。
计算幅值常用近似方法:
常见模版
Roberts
Gx=f(x+1,y+1)−f(x,y) Gy=f(x,y+1)−f(x+1,y)
模版[−100−1] [01−10] Prewitt
模版⎡⎣⎢⎢−1−1−1000111⎤⎦⎥⎥ ⎡⎣⎢⎢−101−101−101⎤⎦⎥⎥ Sobel
模版⎡⎣⎢⎢−1−2−1000121⎤⎦⎥⎥ ⎡⎣⎢⎢−101−202−101⎤⎦⎥⎥
45度模版⎡⎣⎢⎢21010−10−1−2⎤⎦⎥⎥
135度模版⎡⎣⎢⎢012−101−2−10⎤⎦⎥⎥ Istropic Sobel
模版⎡⎣⎢⎢−1−2‾√−100012‾√1⎤⎦⎥⎥ ⎡⎣⎢⎢−101−2‾√02‾√−101⎤⎦⎥⎥
code
clear allload ('lena512.mat');pic=uint8(lena512);prewitt_x=[-1,0,1;-1,0,1;-1,0,1];prewitt_y=[-1,-1,-1;0,0,0;1,1,1];sobel_x=[-1,0,1;-2,0,2;-1,0,1];sobel_y=[-1,-2,-1;0,0,0;1,2,1];threshold=70;prewitt=cal_derivatives(prewitt_x,prewitt_y,pic,threshold);sobel=cal_derivatives(sobel_x,sobel_y,pic,threshold);subplot(131)imshow(pic)title('original image')subplot(132)imshow(prewitt)title('prewitt')subplot(133)imshow(sobel)title('sobel')function [pic_xy]=cal_derivatives(temp_x,temp_y,pic,threshold)[mx,~]=size(temp_x);mid=(mx-1)/2;[m,n]=size(pic);pic=double(pic);for i=1+mid:m-mid for j=1+mid:n-mid pic_x(i,j)=abs(sum(sum(pic(i-mid:i+mid,j-mid:j+mid).*temp_x))); pic_y(i,j)=abs(sum(sum(pic(i-mid:i+mid,j-mid:j+mid).*temp_y))); endendpic_xy=zeros(m,n);% pic_xy=pic_x+pic_y;pic_xy=max(pic_x,pic_y);pic_xy(pic_xy<threshold)=0;pic_xy(pic_xy>=threshold)=255;pic_xy=uint8(pic_xy);end
阅读全文
0 0
- 并行边缘检测
- 边缘跟踪边缘检测
- 边缘检测
- 边缘检测
- 边缘检测
- 边缘检测
- 边缘检测
- 边缘检测
- 边缘检测
- 边缘检测
- 边缘检测
- 边缘检测
- 边缘检测
- 边缘检测
- 边缘检测
- 边缘检测
- 边缘检测
- 边缘检测
- Spring Cloud----Zuul动态路由
- Windows平台下不同版本SVN对比
- Neural Networks and Deep Learning之中文翻译-关于练习与问题
- UnitTest中的Path must be within the project 问题
- 04 XML DTD JAXP解析HTML
- 并行边缘检测
- XSRF
- hdu 1402 A * B Problem Plus
- 53个要点提高PHP编程效率
- 几个经典的数学库之一学习---VCGlib
- Android 通知提示功能
- Bad Rabbit病毒肆虐,设备共享备受考验
- 第 3 次送书中奖名单(另附一个彩蛋)
- Android 彻底组件化番外篇-gradle3.0.0