1.检测图像中的线段

clear
clc
I=imread('1.jpg');%读入图像
I=rgb2gray(I); %转换为灰度图像
h1=[-1, -1. -1; 2, 2, 2; -1, -1, -1]; %模板
h2=[-1, -1, 2; -1, 2, -1; 2, -1, -1];
h3=[-1, 2, -1; -1, 2, -1; -1, 2, -1];
h4=[2, -1, -1; -1, 2, -1; -1, -1, 2];
J1=imfilter(I, h1);       %线段检测
J2=imfilter(I, h2);
J3=imfilter(I, h3);
J4=imfilter(I, h4);
J=J1+J2+J3+J4; %4条线段叠加
figure;
subplot(121);  imshow(I);%显示灰度图像
subplot(122);  imshow(J);%显示检测到的线段

 

2.全局阈值图像分割

clear
clc
I=imread('1.jpg');%读入图像
I=rgb2gray(I); %转换为灰度图像
J=I>50;       %图像分割,阈值为12
[width, height]=size(I);  %图像的行和列
for i=1:width
    for j=1:height
        if (I(i, j)>50)  %图像分割,阈值为130
            K(i, j)=1;
        else 
            K(i, j)=0;
        end
    end
end
figure;
subplot(121);  imshow(J); %显示结果
subplot(122);  imshow(K);

 

3.Otsu图像分割算法

clear
clc
I=imread('1.jpg');%读入图像
I=rgb2gray(I); %转换为灰度图像
I=im2double(I);
T=graythresh(I);  %获取阈值
J=im2bw(I, T);    %图像分割
figure;
subplot(121);  imshow(I);%显示原图像
subplot(122);  imshow(J);%显示结果

 

4.迭代式阈值图像分割算法

clear
clc
I=imread('1.jpg');%读入图像
I=rgb2gray(I); %转换为灰度图像
I=im2double(I);
T0=0.01;       %参数T0
T1=(min(I(:))+max(I(:)))/2;
r1=find(I>T1);
r2=find(I<=T1);
T2=(mean(I(r1))+mean(I(r2)))/2;
while abs(T2-T1)<T0        %迭代求阈值
    T1=T2;
    r1=find(I>T1);
    r2=find(I<=T1);
    T2=(mean(I(r1))+mean(I(r2)))/2;
end
J=im2bw(I, T2);            %图像分割
figure;
subplot(121);  imshow(I);%显示原图像
subplot(122);  imshow(J);%显示结果

 

最后:

如果你想要进一步了解更多的相关知识,可以关注下面公众号联系~会不定期发布相关设计内容包括但不限于如下内容:信号处理、通信仿真、算法设计、matlab appdesigner,gui设计、simulink仿真......希望能帮到你!

5a8015ddde1e41418a38e958eb12ecbd.png

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐