📄 color.m
字号:
%--------------------------------------------------------
%伪彩色处理
%输入:
% Dred: 低通滤波,参数D,作为红色分量
% Dblue1: 带通滤波参数D1,作为蓝色分量
% Dblue2: 带通滤波参数D2,作为蓝色分量
% Dgreen: 高通滤波参数D,作为绿色分量
%输出:
% 经过各种滤波后的图片
%--------------------------------------------------------
function color(Dred,Dblue1,Dblue2,Dgreen);
%参数的定义
%Dred = 5;
%Dblue1 = 4;
%Dblue2 = 20;
%Dgreen = 50;
%读入输入图象
lena = imread('lenna','bmp');
;lena = double(lena);
%输出原图象以用来对比;
figure,subplot(1,2,1);
imshow(lena,[]);
title('原始图象');
%进行二维傅立叶变换;
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('彩色图象');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -