matlab实现读取图片头文件信息,图片三等分及灰度图绘制
医学图像处理教材示例一
此文章是医学图像处理与分析第二版教材示例一代码
1 解读下面图像的文件头和位图信息数据
程序如下
clear
fid=fopen('示例一.bmp','r');
fileinfo=(fread(fid,54)); %此处54为读取行数读取结果为一个列矩阵
每行对应结果如图。15行之后还有其他数据,在此不做赘述。教材当中表格已给出。
2、将图像拆分为大小相等的t1,t2,pd三幅图像
程序如下
A=imread('示例一.bmp'); %读取图片文件
A=rgb2gray(A); %将图片变为灰度图
for i=2:33 %此处读出几处文字坐标,分别进行去除。
for j=218:289
A(i,j)=A(25,313);
end
end
for i=191:311
for j=20:37
A(i,j)=A(25,313);
end
end
for i=215:244
for j=55:452
A(i,j)=A(25,313);
end
end
for i=201:220
for j=475:490
A(i,j)=A(25,313);
end
end
x=size(A,1); %此处分别获得该图片的长度和高度
y=size(A,2);
m=round(y/3); %此处进行三等分并取整,因为y/3不一定是整数
for i=1:1:x %此处开始三个循环将一个图片分为三个图片
for j=1:1:m
A1(i,j)=A(i,j);
end
end
for i=1:1:x
for j=m+1:1:2*m
A2(i,j-m)=A(i,j);
end
end
for i=1:1:x
for j=2*m+1:y-1
A3(i,j-2*m)=A(i,j);
end
end
figure(1);
subplot(131);
imshow(A1);
title('T1w1')
subplot(132);
imshow(A2);
title('PDW1')
subplot(133);
imshow(A3);
title('T2W1');
程序运行结果如下图
3、分别绘出t1,t2,pd三幅图像的灰度直方图
代码如下
B1=imhist(A1); %获取灰度直方图矩阵
B2=imhist(A2);
B3=imhist(A3);
figure(2); %作图
subplot(231);
stem(B1);
subplot(232);
stem(B2);
subplot(233);
stem(B3);
B1(1:20)=0; %去除灰度小于20的部分
B2(1:20)=0;
B3(1:20)=0;
subplot(234);
stem(B1);
subplot(235);
stem(B2);
subplot(236);
stem(B3);
运行结果如下
此文章所示程序为医学图像处理与分析第二版教材示例一代码
借鉴了一些其他文章来完成,是我们作业,我发出来供大家参考。