医学图像的锐化和伪彩色处理
一、实验目的
二、实验要求
1. 为了避免因为中文路径和文件名引起的程序运行错误,请在D盘根目录下新建一个“exp”文件夹,把所有实验文件保存到该文件夹中。
2. 每个实验新建一个文件夹“exp60+序号”,例如,实验1的文件夹命名为“exp601”,将该实验的m文件(或mlx文件)和素材图像文件都放在这个文件夹中。
3. 实验结束时新建个人文件夹,命名为“学号+姓名+实验6”,将D:\exp文件夹复制到个人文件夹,压缩并提交。
三、实验内容与步骤
用Matlab编程实现以下操作:
(一)医学图像的锐化
实验1. 锐化滤波器(标准方法边缘提取)
读入一个医学图像,利用edge函数分别用Roberts算子、Sobel算子、Prewitt算子、 Canny算子提取边缘信息,利用subplot函数将四个锐化处理结果图在同一窗口显示,并用title参数标明所使用的算子名,请将运行结果截图。上交m文件、素材图像文件和截图文件,文件夹命名为exp601。提示:参见实验教材实验五 5。
I= imread ('D:\实验6\exp601\素材1.tif');
imshow (I)
bw1= edge (I, 'roberts'); % Roberts算子;
bw2= edge (I, 'sobel'); % Sobe1算子;
bw3= edge (I, 'prewitt'); % Prewitt算子;
bw4= edge (I, 'canny'); % Canny算子;
figure;
subplot(221),imshow(bw1);title('roberts');
subplot(222),imshow(bw2); title('sobel');
subplot(223),imshow(bw3); title('prewitt');
subplot(224),imshow(bw4); title('canny');
*实验2B. 构造特殊算子高通滤波器(选做内容)
读入一个医学图像,利用Fspecial函数对图像'saturn.tif'采用'laplacian'高通滤波器进行锐化滤波。利用subplot函数将四个锐化处理结果图在同一窗口显示,并用title参数标明所使用的算子名,请将运行结果截图。上交m文件、素材图像文件和截图文件,文件夹命名为exp602B。
提示:参考理论教材6.3.1节。
J=imread('D:\实验6\exp601\素材1.tif');
imshow(J)
h=fspecial('laplacian'); % laplacian算子
I2=filter2(h,J);
subplot(221),imshow(J);title('原始图片');
subplot(222),imshow(I2);title('laplacian');
(二)医学图像的伪彩色处理
实验2. 颜色分量灰度图
读入一个RGB图像,并赋值给I,获取图像的红绿蓝三个颜色分量,并分别赋值给R、G、B,在同一窗口显示原图与它的三个颜色分量图,在另一窗口中显示三个颜色分量的直方图,将三个颜色分量分别存成独立的图像文件,命名为:原素材文件名+_R.jpg, 原素材文件名+_G.jpg, 原素材文件名+_B.jpg。上交m文件或mlx文件、素材文件和结果图像文件,文件夹命名为exp601。提示:参见教材6.4.2节。
I= imread ('D:\实验6\exp602\素材1.tif'); %读取一幅RGB彩色图像
imshow (I)
R=I( : , : , 1); % 红色分量
G=I( : , : , 2); % 绿色分量
B=I( : , : , 3); % 蓝色分量
figure;
subplot(221),imshow(I);title('oraginal');
subplot(222),imshow(R); title('Red');
subplot(223),imshow(G); title('Green');
subplot(224),imshow(B); title('blue');
imwrite(R,'D:\实验6\exp602\素材1_R.tif');
imwrite(G,'D:\实验6\exp602\素材1_G.tif');
imwrite(B,'D:\实验6\exp602\素材1_B.tif');
实验3. 将灰度图像变成彩色图像
读入一个8位灰度医学图像,并赋值给I,利用gray2ind函数把灰度图像变成索引图像赋值给[Y,map],在同一窗口显示原图与转换后的索引图,观察索引图是否有黑白灰以外的颜色。将转换后的索引图存成独立的图像文件,命名为:原素材文件名+_ind.jpg。上交m文件或mlx文件、素材文件和结果图像文件,文件夹命名为exp602。提示:参见教材6.4.3节。
I=imread('D:\实验6\exp603\素材1.tif');
figure,imshow(I);
[Y,map]=gray2ind(I,256); %将灰度图像变为索引图像
figure,imshow(Y,map)
imwrite(Y,map,'D:\实验6\exp603\素材1_ind.tif'); %将索引图像存成独立的图像文件
实验4. 灰度分层变换
读入一个8位灰度医学图像,利用gray2ind函数把灰度图像变成索引图像,利用map为颜色表赋值,将图像灰度级在100-120的像素设为蓝色,将灰度分层变换后的图像存成独立的图像文件,命名为:原素材文件名+_huidufenceng.jpg。上交m文件或mlx文件、素材文件和结果图像文件,文件夹命名为exp603。提示:参见教材6.4.3节。
I=imread('D:\实验6\exp604\素材1.tif'); %读入一幅8位灰度医学图像
imshow(I)
[Y,map]=gray2ind(I,256); %将灰度图像变为索引图像
map(101:151,1)=0; %将灰度级在100-120的像素的红色分量设为0
map(101:151,2)=0; %将灰度级在100-120的像素的绿色分量设为0
map(101:151,3)=1; %将灰度级在100-120的像素的蓝色分量设为1,注意此处是1不是255,否则错误提示:错误使用matLab.ui.Figure/set设置Colormap……
imwrite(Y,map,'D:\实验6\exp604\素材1_huidufenceng.tif'); % 灰度分层变换结果存成独立的图像文件
figure,imshow(Y,map)
实验5.三基色函数变换
读入一个8位灰度医学图像,利用gray2ind函数把灰度图像变成索引图像,利用map为颜色表赋值,利用系统预设的配色方案函数把颜色表改为其他类型,例如用hot函数把颜色表改为随灰度级增加而呈现黑、红、黄、白变化,将三基色函数变换后的图像存成独立的图像文件,命名为:原素材文件名+_3jise_+配色方案名.jpg。上交m文件或mlx文件、素材文件和结果图像文件,文件夹命名为exp603。提示:参见教材6.4.3节,系统预设的配色方案函数见下表。
I=imread('D:\实验6\exp605\素材1.tif'); %读入一幅8位灰度医学图像
imshow(I)
[Y,map]=gray2ind(I,256); %将灰度图像变为索引图像
map=hot(256);%map为图像的颜色表,hot为系统预设颜色表名,256为颜色表长度
imwrite(Y,map,'D:\实验6\exp605\素材1_3jise_hot.tif'); % 灰度分层变换结果存成独立的图像文件
figure,imshow(Y,map)
map=autumn(256);
figure,imshow(Y,map)
imwrite(Y,map,'D:\实验6\exp605\素材1_3jise_autumn.tif'); % 三基色函数变换结果存成独立的图像文件
*实验6.分面变换(选做内容)
为了将处理后的图像与原图像进行比较,选两个内容极为相似但又有所不同的CT图像作为处理对象。读入两幅CT图像分别赋值给I1和I2,用Y表示合成的RGB模式伪彩色图像,令Y的红色分量等于一幅图像I1,绿色分量等于另一图像I2,蓝色分量利用zeros函数设置为全0矩阵。提示:利用size函数可以获得图像尺寸,即行数和列数。参见教材6.4.3节。
I1=imread('D:\实验6\exp606\素材1.jpg'); %读入一幅灰度医学图像
I2=imread('D:\实验6\exp606\素材2.jpg'); %读入另一幅内容相似的灰度医学图像
subplot(121),imshow(I1);
subplot(122),imshow(I2);
Y( : , : , 1)=I1; % 红色分量赋值为第一幅图像矩阵
Y( : , : , 2)=I2; % 绿色分量赋值为第一幅图像矩阵
[m,n,k]=size(Y); % 获取图像尺寸m和n,k为颜色数
Y( : , : , 3)=zeros(m,n); % 蓝色分量赋值为0
figure,imshow(Y)
imwrite(Y,'D:\实验6\exp606\素材1_素材2_fenmian.jpg'); % 分面变换结果存成独立的图像文件