MATLAB数字图像处理练习六

一,题目

  1. 对图1分别采用Sobel算子、Roberts算子、Prewitt算子、LOG算子和Canny算子进行边缘检测,同屏显示和对比各检测结果,并对结果进行分析总结。
    图1:
    MATLAB数字图像处理练习六_第1张图片

  2. 对一幅指纹图像(图2)采用直方图双峰法对图像进行阈值分割。要求给出原图、原图的直方图以及分割后的图像。
    图2:
    MATLAB数字图像处理练习六_第2张图片

  3. 对一幅显微图像(图3)分别采用迭代阈值法和最大类间方差法(大津法)进行分割。要求给出原图、原图的直方图以及两种方法分割后的图像和两种方法所用的阈值T。
    图三:
    MATLAB数字图像处理练习六_第3张图片

  4. 利用Hough变换提取图14中的圆,并计算出垫圈的内外径尺寸。
    图4:
    MATLAB数字图像处理练习六_第4张图片

二,解答

题目一

%%
clc
clear
I=imread('plane.png');
I=rgb2gray(I);
figure(1);subplot(231);imshow(I);title('原图')
BW1=edge(I,'sobel',0.1);
subplot(232);imshow(BW1);title('sobel')
BW2=edge(I,'roberts',0.1);
subplot(233);imshow(BW2);title('roberts')
BW3=edge(I,'prewitt',0.1);
subplot(234);imshow(BW3);title('prewitt')
BW4=edge(I,'log',0);
subplot(235);imshow(BW4);title('log')
BW5=edge(I,'canny',0.1);
subplot(236);imshow(BW5);title('canny')

MATLAB数字图像处理练习六_第5张图片

题目二

%%
clc
clear
I=imread('fingerprint.png');
I=rgb2gray(I);
figure(1)
subplot(131)
imshow(I);title('原图')
subplot(132)
imhist(I);title('原图直方图')
Inew=im2bw(I,160/255);%自己找一个合适值即可
subplot(133)
imshow(Inew);title('分割后的图像')

MATLAB数字图像处理练习六_第6张图片

题目三

1)迭代阈值法

%%
%1
clc
clear
I=imread('cell.png');
I=im2double(rgb2gray(I));
figure(1)
imshow(I)
figure(2)
imhist(I)
T=0.5*(double(min(I(:)))+double(max(I(:))));%初始阈值取平均值
d=1;%标记
while(d)
    g= I>=T;%g为与I同大小的01矩阵
    Tn=0.5*(mean(I(g))+mean(I(~g)));
    d=abs(T-Tn)<0.0001;
    T=Tn;
end
level=T;
BW=im2bw(I,level);%以迭代后的阈值作为分割值
figure(1)
imshow(BW)

MATLAB数字图像处理练习六_第7张图片

2)最大类间方差法(大津法)

T=graythresh(I);%直接调用matlab中找阈值的函数
BW=im2bw(I,T);
imshow(BW)

MATLAB数字图像处理练习六_第8张图片

题目四

可参考:https://blog.csdn.net/mhjerry/article/details/7061819

你可能感兴趣的:(数字图像处理练习,matlab,计算机视觉,图像处理,开发语言)