zoukankan      html  css  js  c++  java
  • matlab---边缘之sobel简单实例

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

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

    理方法。


    matlab代码如下:

     1 load POTDR_室外实验_20140120_160549TwoPoint2.mat  %加载数据,测试数据
     2 Data=data(1:size(data,1),:);  %Data两点扰动的矩阵数据388行*3472列
     3 ColmStart=100;  %因数据量太大,需要对列数据进行采样。从第100列开始取数据 
     4 ColmLag=10;     %采样数据间隔,每隔10列采一列
     5     VAR=[];     %定义一个空向量
     6 
     7  ColmI=ColmStart:ColmLag:size(Data,2)-mod(size(Data,1),ColmLag)-ColmLag;   %ColmI为具体对3472列中哪些列进行采样绘图为1*331的向量
     8 
     9   NewData=Data(:,ColmI);  %NewData为在原3472行数据中采样抽取出来的145列.388*331(原始采样图像数据)
    10 
    11   DiffData=diff(NewData,1); %DiffData为对NewData作一阶差分运算的差分矩阵也是145列 388*331
    12 
    13   IDiffData=abs(DiffData);  %取差分图像数据的绝对值,使得图像中的值都为正


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


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

     


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

     

     

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

     

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

     


     

    1 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实验。


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

     

     
  • 相关阅读:
    Python装饰器理解(新手)
    vue项目随笔
    ajax 请求数据传到后台为空字符
    关于document.body.scrollTop 的谷歌,火狐浏览器兼容问题
    Nginx 反向代理解决浏览器跨域问题
    SpringBoot maven build a new demo
    UI收集
    git
    编译
    网络2
  • 原文地址:https://www.cnblogs.com/vpoet/p/4659761.html
Copyright © 2011-2022 走看看