?? color.m
字號:
%--------------------------------------------------------
%偽彩色處理
%輸入:
% Dred: 低通濾波,參數(shù)D,作為紅色分量
% Dblue1: 帶通濾波參數(shù)D1,作為藍(lán)色分量
% Dblue2: 帶通濾波參數(shù)D2,作為藍(lán)色分量
% Dgreen: 高通濾波參數(shù)D,作為綠色分量
%輸出:
% 經(jīng)過各種濾波后的圖片
%--------------------------------------------------------
function color(Dred,Dblue1,Dblue2,Dgreen);
%參數(shù)的定義
%Dred = 5;
%Dblue1 = 4;
%Dblue2 = 20;
%Dgreen = 50;
%讀入輸入圖象
lena = imread('lenna','bmp');
;lena = double(lena);
%輸出原圖象以用來對比;
figure,subplot(1,2,1);
imshow(lena,[]);
title('原始圖象');
%進(jìn)行二維傅立葉變換;
le_fft = fft2(lena);
[x,y] = size(lena);
le_fft_1 = zeros(x,y);
mid_x = x/2;
mid_y = y/2;
%將低頻部分移到中心;
le_fft_1 = movetocenter(le_fft);
%獲得紅色分量;
H_red = zeros(x,y);
for i = 1:x
for j = 1:y
if(sqrt((i-mid_x)^2+(j-mid_y)^2) <= Dred)
H_red(i,j) = 1;
end
end
end
G_red =zeros(x,y);
for i = 1:x
for j = 1:y
G_red(i,j) = le_fft_1(i,j) * H_red(i,j);
end
end
le_red = abs(ifft2(G_red));
%figure,imshow(le_red,[])
%title('red');
%獲得綠色分量;
H_blue = zeros(x,y);
for i = 1:x
for j = 1:y
if((sqrt((i-mid_x)^2+(j-mid_y)^2)>=Dblue1)&(sqrt((i-mid_x)^2+(j-mid_y)^2)<=Dblue2))
H_blue(i,j) = 1;
end
end
end
G_blue =zeros(x,y);
for i = 1:x
for j = 1:y
G_blue(i,j) = le_fft_1(i,j) * H_blue(i,j);
end
end
le_blue = abs(ifft2(G_blue));
%figure,imshow(le_blue,[])
%title('blue');
%獲得綠色分量;
H_green = zeros(x,y);
for i = 1:x
for j = 1:y
if(sqrt((i-mid_x)^2+(j-mid_y)^2) > Dgreen)
H_green(i,j) = 1;
end
end
end
G_green =zeros(x,y);
for i = 1:x
for j = 1:y
G_green(i,j) = le_fft_1(i,j) * H_green(i,j);
end
end
le_green = abs(ifft2(G_green));
%figure,imshow(le_green,[])
%title('green');
result = cat(3,le_red./255,le_blue./255,le_green./255);
subplot(1,2,2);
imshow(result,[]);
title('彩色圖象');
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -