实验三 图像的分割与基本运

更新时间:2024-05-15 13:23:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验三 图像的分割与基本运算

一、实验目的:

1、进一步了解MATLAB关于图像处理的相关指令。 2、掌握图像分割的基本原理和基本方法。 3、能够用所学方法实现图像分割。

4、掌握象素间算术运算的和逻辑运算的方法; 5、学会比较图像处理结果并分析原因。

二、实验仪器

PC一台,MATLAB软件 。 三、实验内容

(一) 采用人工选择阈值法编写程序,把图像blood.bmp分割为二值图像。尝试不同阈值来分割图像,比较分割效果,选出最满意的阈值。

(提示:

1.先做图像的直方图,参考直方图中灰度的分布尝试确定阈值;应反复调节阈值的大小,直至二值化的效果最为满意为止。

2.运算之前要先转化为双精度:I=double(I),运算之后再转化为二进制数表示:I=uint8(I)

变换式

?0f(x,y)?T如下: ?g(x,y)????255f(x,y)?T阈值可取为T=91,T=130 ,T=43,比较效果,见教材P92

3.得到图像I的大小用函数: [M,N]=size(I),M为行,N为列数 I=imread('blood1.bmp');figure;

subplot(221);imshow(I);title('原图形'); %subplot(122);imhist(I);title('直方图');

I=double(I);I1=double(I);I2=double(I);I3=double(I); [M,N]=size(I); T=91; for i=1:M

for j=1:N

if I(i,j)

subplot(222);imshow(uint8(I1));title('T=91'); T=130; for i=1:M for j=1:N

if I(i,j)

subplot(223);imshow(uint8(I2));title('T=130'); T=43; for i=1:M for j=1:N

if I(i,j)

subplot(224);imshow(uint8(I3));title('T=43');

原图形T=91T=130T=43

(二)采用迭代式阈值选择方法对图像blood.bmp进行二值化处理,并和(一)中处理的结果比较。

f=imread('blood1.bmp');

subplot (121); imshow(f); title('原始图像'); f=double(f);

T=(min(f(:))+max(f(:)))/2; done=false; i=0

while ~done

R1=find(f<=T);

R2=find(f>T);

Tnew=(mean(f(R1))+mean(f(R2)))/2 %求2个灰度均值的平均值 done=abs(Tnew-T)<1 % abs为求绝对值 T=Tnew; i=i+1; end

f(R1)=0; f(R2)=1;

subplot(122);imshow(f);

title('迭代阈值二值化图像');

原始图像迭代阈值二值化图像

Otsu法阈值分割

I = imread('lajiao.bmp');

level = graythresh(I); BW = im2bw(I,level); figure, imshow(BW)

(三)图像的减法

图像相减的结果是把两图的差异显示出来,可以用来增强两幅图像的差异。试编程实现“source.bmp”和“Miss.bmp”两幅图像的相减。

提示:

J=double(S)-double(I); %相减运算

J=uint8(J); %显示图像之前要将双精度转换为8位无符号整数形式。

I=imread('template.bmp');figure;

subplot(131);imshow(I);title(' source原图形');

S=imread('Miss.bmp');subplot(132); imshow(S);title(' Miss原图形'); J=double(S)-double(I); %相减运算

J=uint8(J); %显示图像之前要将双精度转换为8位无符号整数形式。

subplot(133);imshow(J);title('处理后原图形');

source原图形 Miss原图形处理后原图形

(四)图像的平均

用图像平均可以减少随机噪声。将Miss.bmp图像迭加零均值高斯随机噪声,再分别将添加噪声后的4幅、8幅和16幅同类图像(即加入相同噪声)进行相加平均,观察处理结果图像,并分析进行平均的图像数量和除噪效果的关系。

要求:写实验报告时,写出程序,并且对第1、2、3、5、6、7、9行命令做解释说明。

I=imread('Miss.bmp'); [M,N]=size(I); II1=zeros(M,N); for i=1:16

II(:,:,i)=imnoise(I,'gaussian',0,0.01); II1=II1+double(II(:,:,i));

if or(or(i==1,i==4),or(i==8,i==16)); figure;

imshow(uint8(II1/i)); end end

(五)图像的逻辑“与”运算

通过图像的“与”操作和“或”操作2种方法,从一幅图像中提取子图像。试采用“与”

运算用matlab程序实现'Miss.bmp'图像中头像的提取。

提示及要求:

1) “与”运算的函数为:

K(i,j)=bitand(I(i,j),J(i,j));%将I和J“与”操作得到K

2) 观察并分析运算的结果,生成图像及结果分析一定要出现在报告中。

3)试修改程序以改变提取的子图像的大小

close all;

I=imread('Miss.bmp'); %逻辑与 [M,N]=size(I); I=double(I);

I1=ones(M,N)*0;I1(20:200,60:200)=255; for i=1:M for j=1:N

II(i,j)=bitand(I(i,j),I1(i,j)); end end

I=uint8(I); I1=uint8(I1);II=uint8(II); Subplot(221);imshow(I); title('(a) 原图像'); Subplot(222);imshow(I1); title('(b) 提取窗');

Subplot(223);imshow(II); title('(c) 与运算提取头像');

(六)图像的逻辑“或”运算

试采用“或”运算实现'Miss.bmp'图像中头像的提取。

提示及要求:

1) 参考逻辑“与”的程序编写“或”程序,编写“或”程序时要生成一个白底黑

色提取窗的图像(和“与”运算时相反,注意调整提取窗的位置,使之能够提取到完整的头像),模版图像如下图所示。

2) 观察并分析两种运算的结果,生成图像及结果分析一定要出现在报告中。

白底黑色提取窗

(七) 编程实现一幅灰度图像(车牌图像或source图像)的水平投

影和垂直投影。

Source.bmp

本文来源:https://www.bwwdw.com/article/xss7.html

Top