一,题目
一. 对图1分别采用Sobel算子、Roberts算子、Prewitt算子、LOG算子和Canny算子进行边缘检测,同屏显示和对比各检测结果,并对结果进行分析总结。
图1:
二. 对一幅指纹图像(图2)采用直方图双峰法对图像进行阈值分割。要求给出原图、原图的直方图以及分割后的图像。
图2:
三. 对一幅显微图像(图3)分别采用迭代阈值法和最大类间方差法(大津法)进行分割。要求给出原图、原图的直方图以及两种方法分割后的图像和两种方法所用的阈值T。
图三:
四. 利用Hough变换提取图14中的圆,并计算出垫圈的内外径尺寸。
图4:
二,解答
题目一
clc
clear
I=imread('plane.png');
I=rgb2gray(I);
I=imfilter(I,fspecial('average',2));%均值滤波,滤除部分噪声
figure(1);subplot(231);imshow(I);title('原图')
BW1=edge(I,'sobel',0.07);%0.07为判别阈值,可自己设置,找到最好的图像,下同
subplot(232);imshow(BW1);title('sobel')
BW2=edge(I,'roberts',0.07);
subplot(233);imshow(BW2);title('roberts')
BW3=edge(I,'prewitt',0.07);
subplot(234);imshow(BW3);title('prewitt')
BW4=edge(I,'log',0.008);
subplot(235);imshow(BW4);title('log')
BW5=edge(I,'canny',0.3);
subplot(236);imshow(BW5);title('canny')
题目二
%%
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('分割后的图像')
题目三
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)
2)最大类间方差法(大津法)
T=graythresh(I);%直接调用matlab中找阈值的函数
BW=im2bw(I,T);
imshow(BW)