医学影像处理 实验报告

  • 格式:doc
  • 大小:357.00 KB
  • 文档页数:9

医学成像技术与图像处理实验报告

学 院(系): 电子信息与电气工程学部

专 业: 生物医学工程

学 生 姓 名:

学 号:

指 导 教 师: 刘 惠

完 成 日 期: 2013.06.25 实验一:数字图像读取及色彩、亮度、对比度变化

一、实验目的

了解数字图像的存储格式,并学会对图像的某些视觉特征作简单处理。

二、实验要求

1.从最常用的“.BMP”图像格式中读取图像数据;

2.对数字图像的表示方式(如RGB、YUV)及各种表示方式之间的转换有初步了解;

3.根据输入参数改变数字图像的色彩、亮度、对比度。

三、实验步骤

1.利用工具(如ACDSee、PhotoShop)将Sample.1.jpg转换为Sample1.bmp;

2.借助imread命令将图像内容读入内存数组;

3.通过访问数字图像RGB三个通道的对应矩阵,改变数字图像的色彩;

4.将数字图像的RGB表示转换为YUV表示;

Y=0.30R+0.59G+0.11B

U=0.70R-0.59G-0.11B

V=-0.30R-0.59G+0.89B

5.通过访问Y(亮度)通道,改变数字图像的亮度;

6.通过Y(亮度)通道作灰度的线性变换,改变数字图像的对比度。

四、实验程序及图像处理结果

pic=imread('E:\实验\1.jpg');

pic=rgb2gray(pic);

subplot(1,2,1);

imshow(pic);

title('GRAY');

INFO = imfinfo('E:\实验\1.jpg');

INFO.Width,INFO.Height

pic1 = pic(1:2:end,1:2:end);

subplot(1,2,2); imshow(pic1);

title('RE');

function f

A=imread('E:\实验\Sample1.bmp'); %将原图像读入内存

[r,c,d]=size(A);

red=A;

red(:,:,1)=A(:,:,1);

red(:,:,2)=zeros(r,c);

red(:,:,3)=zeros(r,c);

red=uint8(red);

subplot(3,3,1);

imshow(red); %通过访问R通道来观察图像

title('Red');

green=zeros(r,c);

green(:,:,2)=A(:,:,2);

green(:,:,1)=zeros(r,c);

green(:,:,3)=zeros(r,c);

green=uint8(green); subplot(3,3,2);

imshow(green); %通过访问G通道来观察图像

title('Green');

blue=zeros(r,c);

blue(:,:,3)=A(:,:,3);

blue(:,:,1)=zeros(r,c);

blue(:,:,2)=zeros(r,c);

blue=uint8(blue);

subplot(3,3,3);

imshow(blue); %通过访问B通道来观察图像

title('Blue');

Y=0.3*red+0.59*green+0.11*blue; %将图像的RGB转换为YUV

U=0.70*red-0.59*green-0.11*blue;

V=-0.30*red-0.59*green+0.89*blue;

subplot(3,3,4);

imshow(Y);

title('原图亮度'); %原图像亮度显示

Y=2*Y;

subplot(3,3,5);

imshow(Y); %增大图像亮度并显示

title('增大亮度');

Y=Y/4;

subplot(3,3,6);

imshow(Y); %减小图像亮度并显示

title('减少亮度');

GreyR(:,:,1)=100+100/255*A(:,:,1);

GreyR(:,:,2)=100+100/255*A(:,:,2);

GreyR(:,:,3)=100+100/255*A(:,:,3);

subplot(3,3,7);

imshow(GreyR);

title('线性变换');

实验二:数字图像的噪声去除

一、实验目的:

完善程序,对图像进行去噪操作。

二、实验要求

1.用均值滤波器去除图像中的噪声;

2.用中值滤波器去除图像中的噪声;

3.比较两种方法的处理结果

三、实验步骤

1.将图像‘Lena-1.bmp’和‘Lena-2.bmp’读入内存数组;

2.用均值滤波器去除图像中的噪声;

],[],[2000000),()12(1),(NyNyyNxNxxyxfNyxf

3.用中值滤波器去除图像中的噪声;

000000(,){(,)|[,],[,]}fxyMedfxyxxNxNyyNyN

将两种处理方法的结果与原图比较;

4.注意两种处理方法对边缘的影响。

四、实验程序及图像结果

clc

i=imread('E:\实验\34.bmp');

subplot(1,3,1);

imshow(i);

i1=avefiltm(i,5); %进行均值滤波

subplot(1,3,2),imshow(i1);

title('均值滤波');

i2=midfiltm(i,5);

subplot(1,3,3),imshow(i2); title('中值滤波'); %进行中值滤波

分程序 均值滤波

function d=avefiltm(x,n)

if((n<=1)|(n/2==round(n/2))|(n~=round(n))) %【round】 临近取整

error('n must be an odd integer >l') %必须对n进行判定

else

end

a(1:n,1:n)=1; %a即n×n模板,元素全是1

p=size(x); %【size】用来求矩阵大小 输出为行树和列数

x1=double(x);

x2=x1;

%一个循环 A(a:b,c:d)表示A矩阵的第a到b行,第c到d列的所有元素

for i=1:p(1)-n+1

for j=1:p(2)-n+1 c=x1(i:i+(n-1),j:j+(n-1)).*a; %矩阵相乘

s=sum(sum(c)); %【sum】求c矩阵和

x2(i+(n-1)/2,j+(n-1)/2)=s/(n*n) %将模板各元素的均值赋给模板中心位置的元素

end

end

%【uint8】未被赋值的元素取原值 应该是需要加上的,不加效果其实差不多

d=uint8(x2);

end

分程序 中值滤波

function d=midfilt(x,n)

if((n<=1)|(n/2==round(n/2))|(n~=round(n)))

error('n must be an odd integer >l')

else

end

p=size(x);

x1=double(x);

x2=x1;

for i=1:p(1)-n+1

for j=1:p(2)-n+1

c=x1(i:i+(n-1),j:j+(n-1)); %取出x1中从(i,j)开始的n行n列元素,即模板(n×n的)

e=c(1,:); %c表示矩阵的第一行

for u=2:n

e=[e,c(u,:)]; %将c矩阵变为一个行矩阵

end

med=median(e); %【median】取中值

x2(i+(n-1)/2,j+(n-1)/2)=med; %将中值赋给模板中心的元素

end

end d=uint8(x2);

end

五.分析与比较

1.均值滤波器:均值滤波器是一种线性滤波器,即取滑动矩形窗口内像素的灰度均值作为中心像素的灰度值,它能较好地抑制图象中的加性噪声。但是,线性滤波器会引起图象的钝化或模糊,使得图象中物体边界产生位移。如果图象受到乘性噪声或脉冲噪声的干扰,如超声波及雷达成像中普遍存在的斑点噪声, 线性滤波器就不能取得预期的效果。

2.中值滤波器:中值滤波是对一个滑动矩形窗口内的象素灰度值排序, 用其中间值代替窗口中心象素的灰度, 它是一种非线性滤波器. 中值滤波器对脉冲干扰及椒盐噪声的抑制效果好, 同时能够保持图象的边沿特征.