失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > matlab实现灰度图像伪彩色处理

matlab实现灰度图像伪彩色处理

时间:2019-11-30 06:10:31

相关推荐

matlab实现灰度图像伪彩色处理

1.基于灰度图像的伪彩色处理

代码展示:

clear all;close all;I = double(rgb2gray(imread('图片1.jpg')));[M N] = size(I);I2 = zeros(M, N, 3); %初始化三通道for x = 1 : Mfor y = 1 : Nif I(x, y) <= 127 % RI2(x, y, 1) = 0;elseif I(x, y) <= 191I2(x, y, 1) = 4 * I(x, y) - 510;elseI2(x, y, 1) = 255;endif I(x, y) <= 63 % GI2(x, y, 2) = 254 - 4 * I(x, y);elseif I(x, y) <= 127I2(x, y, 2) = 4 * I(x, y) - 254;elseif I(x, y) <= 191I2(x, y, 2) = 255;elseI2(x, y, 2) = 1022 - 4 * I(x, y);endif I(x, y) <= 63 % BI2(x, y, 3) = 255;elseif I(x, y) <= 127I2(x, y, 3) = 510 - 4 * I(x, y);elseI2(x, y, 3) = 0;endendendimshow(uint8(I2));

1

2.基于灰度分层的伪彩色图像

代码展示:

I=imread('图片1.jpg');I=rgb2gray(I)imshow(I) %显示灰度图像thresholds= [45 65 84 108 134 157 174 189 206 228]; %设置阈值G2C=grayslice(I,thresholds); % 密度分层figure;mymap = [0 0 0 %黑色1 0 0 %红色0 1 0 %绿色0 0 1 %蓝色1 1 0 %黄色1 1 1]; %白色surf(peaks)imshow(G2C,colormap(mymap)); %显示伪彩色图像

3.基于频域的伪彩色图像处理

代码展示:

clear;close allI=imread('图片1.jpg');I=rgb2gray(I);F=fft2(double(I));F=fftshift(F); %中心化sz=size(I);fm=abs(F); %取模,傅里叶变换图像上的点的值成为了复数,取模后才能显示为图像subplot(221),imshow(log(1+fm),[]) %对数变换 拉伸 增强显示视觉效果threshold=60; % boundary between lower frequency and higher frequencyhighF(sz(1),sz(2))=zeros;lowF(sz(1),sz(2))=zeros;for i=1:sz(1)for j=1:sz(2)d=sqrt((i-sz(1)/2)*(i-sz(1)/2)+(j-sz(2)/2)*(j-sz(2)/2));if d<thresholdlowF(i,j)=F(i,j);highF(i,j)=0;elsehighF(i,j)=F(i,j);lowF(i,j)=0;endendendhighF=ifftshift(highF);highI=ifft2(highF);lowF=ifftshift(lowF);lowI=ifft2(lowF);lowI=real(lowI); %reserve the real parthighI=real(highI); %reserve the real partlowIII(sz(1),sz(2),3)=zeros;highIII(sz(1),sz(2),3)=zeros;for i=1:sz(1)for j=1:sz(2)lowIII(i,j,1)=lowI(i,j);lowIII(i,j,2)=lowI(i,j);lowIII(i,j,3)=lowI(i,j);if highI(i,j)<10% #4B0082highIII(i,j,1)=hex2dec('4B');highIII(i,j,2)=hex2dec('00');highIII(i,j,3)=hex2dec('82');elseif highI(i,j)<50% #8B0000highIII(i,j,1)=hex2dec('8B');highIII(i,j,2)=hex2dec('00');highIII(i,j,3)=hex2dec('00');elseif highI(i,j)<100% #FF4500highIII(i,j,1)=hex2dec('FF');highIII(i,j,2)=hex2dec('45');highIII(i,j,3)=hex2dec('00');elseif highI(i,j)<150% #FFD700highIII(i,j,1)=hex2dec('FF');highIII(i,j,2)=hex2dec('D7');highIII(i,j,3)=hex2dec('00');elseif highI(i,j)<200% #7A67EEhighIII(i,j,1)=hex2dec('7A');highIII(i,j,2)=hex2dec('67');highIII(i,j,3)=hex2dec('EE');else% #008B00highIII(i,j,1)=hex2dec('00');highIII(i,j,2)=hex2dec('8B');highIII(i,j,3)=hex2dec('00');endendendlowIII=uint8(lowIII);highIII=uint8(highIII);subplot(222); imshow(lowIII); title('灰度图像');subplot(223); imshow(highIII); title('伪彩色图相处');

4.基于位平面的伪彩色处理

代码展示:

clc;clear all;X=double(rgb2gray(imread('图片1.jpg')));[h w] = size(X);subplot(3,3,1);imshow(X,[]);title('原始图像');tmp(h,w,3)=zeros;color = ["4B","00","82","8B","00","00","FF","45","00","DD","A0","DD","7A","67","EE","00","8B","00","94","00","D3","00","00","80"];for k=1:8tmp(:,:,:)=0;for i=1:hfor j=1:wtempIndex = bitget(X(i,j),k); %灰度值分解为二进制串,然后取第k位if tempIndex == 1tmp(i,j,1) = hex2dec(color(3*(k-1)+1));tmp(i,j,2) = hex2dec(color(3*(k-1)+2));tmp(i,j,3) = hex2dec(color(3*(k-1)+3));endendendsubplot(3,3,k+1);imshow(tmp,[]);ind = num2str(k);imti = ['第',ind,'个位平面'];title(imti);end

5.基于金字塔的伪彩色处理

5.1高斯金字塔函数

function pyr = gauss_pyramid1(I,nlev)pyr = cell(nlev,1);pyr{1} = I;G_LOWER = I;f = [.05, .25, .4, .25, .05]; f = f'*f;for l = 2:nlev G_LOWER=G_LOWER(1:2:size(G_LOWER,1)-1,1:2:size(G_LOWER,2)-1); %降采样 pyr{l}=imfilter(G_LOWER,f,'replicate');endend

5.2不同分辨率金字塔上色

clear;I = im2double(rgb2gray(imread('图片1.jpg')));%¸高斯金字塔调用gauss_pyr=gauss_pyramid1(I,5);color = ['FF','00 ','FF','8B','00','8B','FF','00','00','CD','68','39','19','19','70'];for k=1:length(gauss_pyr)[M,N]=size(gauss_pyr{k});for i=1:Mfor j=1:Nif gauss_pyr{k}(i,j)<0.2% 变色gauss_pyr{k}(i,j,1)=hex2dec(color(3*k-2));gauss_pyr{k}(i,j,2)=hex2dec(color(3*k-1));gauss_pyr{k}(i,j,3)=hex2dec(color(3*k));elseif gauss_pyr{k}(i,j)<0.3% #FF00FF 洋红gauss_pyr{k}(i,j,1)=hex2dec('FF');gauss_pyr{k}(i,j,2)=hex2dec('00');gauss_pyr{k}(i,j,3)=hex2dec('FF');elseif gauss_pyr{k}(i,j)<0.4% #FFD700金gauss_pyr{k}(i,j,1)=hex2dec('FF');gauss_pyr{k}(i,j,2)=hex2dec('D7');gauss_pyr{k}(i,j,3)=hex2dec('00');elseif gauss_pyr{k}(i,j)<0.6% #4B0082靛青gauss_pyr{k}(i,j,1)=hex2dec('4B');gauss_pyr{k}(i,j,2)=hex2dec('00');gauss_pyr{k}(i,j,3)=hex2dec('82');elseif gauss_pyr{k}(i,j)<0.8% #FFFF00纯黄gauss_pyr{k}(i,j,1)=hex2dec('FF');gauss_pyr{k}(i,j,2)=hex2dec('FF');gauss_pyr{k}(i,j,3)=hex2dec('00');else% #008000纯绿gauss_pyr{k}(i,j,1)=hex2dec('00');gauss_pyr{k}(i,j,2)=hex2dec('80');gauss_pyr{k}(i,j,3)=hex2dec('00');end

如果觉得《matlab实现灰度图像伪彩色处理》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。