zoukankan      html  css  js  c++  java
  • matlab练习程序(MarrHildreth边缘检测)

      方法是先用LoG算子进行滤波,在对图像的过零点进行检测。

    clear all;
    close all;
    clc;
    
    %产生LoG算子(Laplacian of Gaussian)
    m=11;
    n=11;
    sigma=1.4;
    w=zeros(m,n);
    h_m=(m-1)/2;
    h_n=(n-1)/2;
    for i=1:m
        for j=1:n
            y=i-h_m;
            x=j-h_n;
            w(i,j)=(1/(sigma*sigma))*((y*y+x*x)/(sigma*sigma)-2)*exp(-(y*y+x*x)/(2*sigma*sigma)); 
        end
    end
    w=w/sum(sum(w));    %归一化
    
    img=double(imread('lena.jpg'));
    imgn=imfilter(img,w,'replicate');
    
    %过零点检测,一个函数最大值大于零,最小值小于零,那么函数中间一定有为零的点
    %准确的过零点的值需要插值
    [m n]=size(img);
    for i=2:m-1
        for j=2:n-1
            tmp(1)=sum(sum(imgn(i-1:i,j-1:j)));
            tmp(2)=sum(sum(imgn(i-1:i,j:j+1)));
            tmp(3)=sum(sum(imgn(i:i+1,j-1:j)));
            tmp(4)=sum(sum(imgn(i:i+1,j:j+1)));
            Ma=max(tmp);
            Mi=min(tmp);
            if Ma>0 && Mi<0
                imgn(i,j)=255;
            end
        end
    end
    
    imshow(imgn==255);

    没有Canny效果好,不过能够得到闭合的曲线,当然,计算量也比Canny小。

  • 相关阅读:
    其实吧
    一个很SB的方法,来开始调一个刚启动就SB的程序
    今天真的很SB
    32位程序关闭路径重定向
    WinDbg神断点
    SQLMap用户手册【超详细】

    真有敢干的
    21.递归
    16.数字大小升降排序编写
  • 原文地址:https://www.cnblogs.com/tiandsp/p/2818054.html
Copyright © 2011-2022 走看看