ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

图像分割——孤立点检测(Matlab)

2019-09-05 21:08:23  阅读:853  来源: 互联网

标签:end 孤立 Opening pad Matlab 图像 Erosion Block


clc;
clear all;
close all;
%点检测测试图像(Detection of Isolated Points)
I=im2double(imread('D:\Gray Files\10-4.tif'));
[M,N]=size(I);

%%
%===========================孤立点检测=====================================
%输出图像
g=zeros(M,N);
%拉普拉斯内核(Laplacian kernel),各向同性
L=[1 1 1;1 -8 1;1 1 1];
n_l=floor(size(L,1)/2);
%对原图进行扩展,方便处理边界
I_pad=padarray(I,[n_l,n_l],'symmetric');
%卷积翻转
L=-L;
%门限
T=0.89903;
for i=1:M
    for j=1:N
        %获得图像子块区域
        Block=I_pad(i:i+2*n_l,j:j+2*n_l);
        %用拉氏内核对子区域卷积
        if abs(sum(sum(Block.*L)))>T
            g(i,j)=1;
        end
    end
end
%对孤立点做开操作,删除小点
g=Opening(g,3);
imshow(g)

开操作函数,Opening如下:

%开操作
% I 输入图像
% n 结构元素长度
function J_Opening=Opening(I,n)
    B=ones(n,n);
    n_B=length(find(B==1));
    %这里需要B对其原点进行翻转,因为B是对称的,所以翻转后的结果与其本身相同
    l_m=floor(n/2);
    l_n=floor(n/2);
    [M,N]=size(I);
    %将原始图像进行扩展,这里采用了镜像扩展,以进行图像边缘计算    
    J_Erosion=zeros(M,N);
    J_Opening=zeros(M,N);
    I_pad=padarray(I,[l_m,l_n],'symmetric');
    %腐蚀操作
    for x=1:M
        for y=1:N
            %从扩展图像中取出子图像
             Block=I_pad(x:x+2*l_m,y:y+2*l_n);
             %将结构元素与子图像点乘,即逻辑“与”操作
             c=B.*Block;
             %比较结构元素与c中的1的数量,如果一样多,则该点的值为1
             ind=find(c==1);
             if length(ind)==n_B
                 J_Erosion(x,y)=1;
             end
        end
    end
    %膨胀操作
    J_Erosion_pad=padarray(J_Erosion,[l_m,l_n],'symmetric');
    for x=1:M
        for y=1:N
            %从扩展图像中取出子图像
             Block=J_Erosion_pad(x:x+2*l_m,y:y+2*l_n);
             %将结构元素与子图像点乘,即逻辑“与”操作
             c=B.*Block;
             %比较结构元素与c中的0的数量,如都为0,则该点的值为0,否则为1
             ind=find(c==0);
             if length(ind)~=n_B
                 J_Opening(x,y)=1;
             end
        end
    end
end

 

标签:end,孤立,Opening,pad,Matlab,图像,Erosion,Block
来源: https://blog.csdn.net/lengo/article/details/100565658

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有