医学影像处理 实验报告
- 格式: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.中值滤波器:中值滤波是对一个滑动矩形窗口内的象素灰度值排序, 用其中间值代替窗口中心象素的灰度, 它是一种非线性滤波器. 中值滤波器对脉冲干扰及椒盐噪声的抑制效果好, 同时能够保持图象的边沿特征.