Matlab:如何将暗光环境下的成像可视化以及灰度图映射成彩色图像?
文章目录
主题内容:将暗光环境下的小鼠体内的放射性元素成像与小鼠图像进行融合。(原图的格式采用tiff格式,本文涉及的素材及代码均已上传(提取码: sxf4))
一:将暗光环境下的成像可视化?
- 采用矩阵的点称对原图像素值进行可视化变换。
pet=imread('E:/photograph.tif');%小鼠图像 pet=double(pet);%将像素转换成double类型 pet1=pet.^(0.4+0.05*6); imshow(uint8(pet1));%显示可视化图像,这里将类型还原成整数类型显示 tumor=imread('E:/tumors.tif');%放射扫描图像 tumor=double(tumor); imshow(uint8(tumor.^(0.4+0.05*5)));
二:如何进行灰度图的颜色映射?
由于小鼠图像的通道为1(灰度图通道数为1),首先将通道数转换成3
tumor_dyed_color(:,:,1)=pet1(:,:,1);%其余2个通道的颜色值均与1通道保持一致 tumor_dyed_color(:,:,2)=pet1(:,:,1); tumor_dyed_color(:,:,3)=pet1(:,:,1);
设定ROI(Region Of Interest),而不是把将放射元素成像全部映射为彩色。
lower_tensity=1000; %选取灰度值大于1000,小于1300的像素点进行颜色映射。 upper_tensity=1300;
采用map.txt进行颜色映射,map内有从0255种颜色值,通过不同的灰度值映射成不同的0255颜色值。
对应的转换关系为:
map=round(255*load('E:/map.txt'));%将map转换为整数类型 >> level_num=(range/len);%计算level_num ind=round((tumor(i,j)-lower_tensity)/level_num);%将ROI范围内像素对应的灰度值映射到map的对应颜色值 >> tumor_dyed_color(i,j,1)=map(ind,1);%进行3个颜色通道的映射 tumor_dyed_color(i,j,2)=map(ind,2); tumor_dyed_color(i,j,3)=map(ind,3);
三:代码的整合:
pet=imread('E:/photograph.tif'); pet=double(pet); pet1=pet.^(0.4+0.05*6); si=size(pet1); pet=zeros(si(1),si(2),3); tumor_dyed_color=zeros(si(1),si(2),3);%设置空图 tumor_dyed_color(:,:,1)=pet1(:,:,1);%通道数转换 tumor_dyed_color(:,:,2)=pet1(:,:,1); tumor_dyed_color(:,:,3)=pet1(:,:,1); tumor=imread('E:/tumors.tif'); tumor=double(tumor); tumor=tumor.^(0.4+0.05*5); size_tumor=size(tumor); lower_tensity=1000; %设定ROI upper_tensity=1300; map=round(255*load('E:/map.txt')); s=size(map); len=s(1); range=upper_tensity-lower_tensity+1; level_num=(range/len); for i=1:size_tumor(1)%扫描图像 for j=1:size_tumor(2) %感兴趣像素检测 if tumor(i,j)>lower_tensity&&tumor(i,j)<upper_tensity ind=round((tumor(i,j)-lower_tensity)/level_num); if ind==0 %colormap中的色彩行标 ind=1; end tumor_dyed_color(i,j,1)=map(ind,1);%map投影到显示图 tumor_dyed_color(i,j,2)=map(ind,2); tumor_dyed_color(i,j,3)=map(ind,3); end end end imshow(uint8(tumor_dyed_color)); pause(0)