matlab---边缘之sobel简单实例

本文通过Matlab实现图像边缘检测,介绍了如何加载和处理图像数据,并应用Sobel算子进行垂直方向的边缘检测。通过展示不同阶段的图像,帮助理解边缘检测的过程。

最近在项目中需要做一些图像边缘检测的工作,但是由于之前没接触过图像处理的相关知识,所以只得在matlab里面对

一些图像处理函数挨个挨个的试着用。在用的过程中在慢慢的明白了一些简单的图像处理方法。


matlab代码如下:


load POTDR_室外实验_20140120_160549TwoPoint2.mat  %加载数据,测试数据


Data=data(1:size(data,1),:);  %Data两点扰动的矩阵数据388行*3472列


ColmStart=100;  %因数据量太大,需要对列数据进行采样。从第100列开始取数据 


ColmLag=10;     %采样数据间隔,每隔10列采一列


    VAR=[];     %定义一个空向量



 ColmI=ColmStart:ColmLag:size(Data,2)-mod(size(Data,1),ColmLag)-ColmLag;   %ColmI为具体对3472列中哪些列进行采样绘图为1*331的向量



  NewData=Data(:,ColmI);  %NewData为在原3472行数据中采样抽取出来的145列.388*331(原始采样图像数据)



  DiffData=diff(NewData,1); %DiffData为对NewData作一阶差分运算的差分矩阵也是145列 388*331



  IDiffData=abs(DiffData);  %取差分图像数据的绝对值,使得图像中的值都为正


接下来将画一些图像,让读者有一些直观的印象:


imshow(NewData); %显示原始采样图像数据的的灰度图:


edge(NewData,'sobel','vertical');%原始采样图像数据的灰度图的垂直方向的边缘检测:


imshow(DiffData);%显示差分图像数据的灰度图:


edge(DiffData,'sobel','vertical');%差分图像的垂直边缘检测


imshow(IDiffData);%差分图像绝对值的灰度图


edge(IDiffData,'sobel','vertical');%显示差分绝对值的垂直边缘检测



VAR=[VAR var(DiffData,1)]; %^VAR为一个1*331的行向量,其中的每个值为差分矩阵每个列向量的方差,方差越大,代表NewData中列与列之间的数据变化越大。

 

plot(VAR);hold on;plot(VAR,'r*');axis tight;title('差分后的方差图像');%二维输出方差向量。并描出每隔方差向量点。一列一个点





至此:边缘检测的一些图像和matlab代码已经呈现出来了。

从这些图像中不难看出边缘检测的规律,读者也可以自己

对照着进行一些matlab实验。


本文逻辑稍显混乱,望读者谅解。



转载请注明作者:小刘



评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值