资源简介
利用八个方向的sobel边缘检测,其中为防止灰度值溢出对灰度值进行一个扩大和缩放的过程,可以检测出八个方向的灰度梯度值,检测出的边缘更加平缓连续,有兴趣的可以了解一下。

代码片段和文件信息
clear all;clc
s0=[-1-2-1;000;121];
s45=[-2-10;-101;012];
s90=[-101;-202;-101];
s135=[012;-101;-2-10];
s180=[121;000;-1-2-1];
s225=[210;10-1;0-1-2];
s270=[10-1;20-2;10-1];
s315=[0-1-2;10-1;210];%八个方向的sobel算子
A=imread(‘1.bmp‘);
[uv]=size(A);
B=zeros(uv);
B1=uint16(B);%生成和原图片大小相同的图片但考虑经过边缘检测后值较大故设置为uint16
for i=1:u
for j=1:v
B1(ij)=A(ij);
end
end
%A=im2double(A);
image(1).x=abs(filter2(s0B1));
image(2).x=abs(filter2(s45B1));
image(3).x=abs(filter2(s90B1));
image(4).x=abs(filter2(s135B1));
image(5).x=abs(filter2(s180B1));
image(6).x=abs(filter2(s225B1));
image(7).x=abs(filter2(s270B1));
image(8).x=abs(filter2(s315B1));%进行八个方向的sobel算子图像边缘检测
image1=edge(A‘sobel‘);%进行传统的sobel算子边缘检测
image2=edge(A‘prewitt‘);%进行prewitt算子边缘检测
B2=B;
for i=1:8
B2=max(B2image(i).x) ;%将各个方向的sobel算子边缘检测的最大值汇总到一张图片中
end
D=B2/1.5;%避免灰度值溢出,将其缩放
BB=uint8(B);
for i=1:u
for j=1:v
BB(ij)=D(ij);
end
end
C=graythresh(BB);
D=im2bw(BBC);%二值化
figure
imshow(A);xlabel(‘图1:原图‘)
figure
imshow(image1);xlabel(‘图2:传统sobel‘)
figure
imshow(image2);xlabel(‘图3:prewitt算法‘)
figure
imshow(D);xlabel(‘图4:八个方向sobel‘)
%//对缩放因子进行分析//
x1=0;x2=0;x3=0;
for i=100:150 %选定包含目标的小区域
for j=100:150
x1=x1+1;
x2=x2+image1(ij);
x3=x3+image2(ij);%提取出的边缘信息求和
end
end
x2=x2/x1;
x3=x3/x1;
x=1:0.01:2;
for c=1:length(x)
x4=0;
D=B2/x(c);%避免灰度值溢出,将其缩放
BB=uint8(B);
for i=1:u
for j=1:v
BB(ij)=D(ij);
end
end
C=graythresh(BB);
D=im2bw(BBC);
for i=100:150 %选定包含目标的小区域
for j=100:150
x4=x4+D(ij);%八个方向Sobel提取出的边缘信息求和
end
end
p(c)=x4/x1;%八个方向sobel边缘检测比例
p1(c)=x2;%传统sobel边缘检测比例
p2(c)=x3;%prewitt边缘检测比例
end
figure
plot(xp‘-‘);
hold on;
plot(xp1‘+‘);
hold on
plot(xp2‘.‘);
legend(‘八个方向sobel‘‘传统sobel‘‘prewitt‘); % legend 会自动根据画图顺序分配图形
xlabel(‘缩放因子‘);
ylabel(‘边缘检测比例‘);
hold off;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-05-17 16:25 边缘检测\
文件 66614 2018-04-13 12:47 边缘检测\1.bmp
文件 66614 2004-03-23 21:24 边缘检测\lena.bmp
文件 2284 2018-05-10 17:28 边缘检测\sd.m
文件 163 2019-05-15 16:36 说明.txt
- 上一篇:模糊PID的simuli
nk仿真及结果分析 - 下一篇:matlab脑电信号处理
相关资源
- 天线阵的波束形成在MATLAB仿真程序及
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 组合导航matlab程序
- 读取txt文件内容matlab代码实现
- Matlab实现基于相关的模板匹配程序
- matlab优化工具箱讲解
- 基于MATLAB的快速傅里叶变换
- 光纤传输中的分布傅立叶算法matlab实
- 基于matlab的图像处理源程序
- matlab 椭圆拟合程序
- 算术编码解码matlab源代码
- optical_flow 光流法 matlab 实现程序
- 引导图像滤波器 Matlab实现
- 分形几何中一些经典图形的Matlab画法
- OFDM系统MATLAB仿真代码
- SVM工具箱(matlab中运行)
- 图像小波变换MatLab源代码
- LU分解的MATLAB实现
- 冈萨雷斯数字图像处理matlab版(第三
- 替代数据法的matlab程序
- 用matlab实现的多站定位系统性能仿真
- 通过不同方法进行粗糙集属性约简m
- k近邻算法matlab实现
- matlab识别系统
- 神经网络分类matlab程序
- matlab正弦信号发生器的设计
- matlab程序用Hopfield网络解决TSP
- 实例matlab 编程100个常用程序
- 用MATLAB(BPSK仿真 直接扩频)
评论
共有 条评论