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;endend
endimshow(uint8(I2));

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 all
I=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 frequency
highF(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;endend
end
highF=ifftshift(highF);
highI=ifft2(highF);
lowF=ifftshift(lowF);
lowI=ifft2(lowF);lowI=real(lowI); %reserve the real part
highI=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');endend
endlowIII=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