马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
我想要把黑底上面有R(红色) G(绿色) B(蓝色)的图片的颜色分开分别与横 竖 斜(45度)的条纹光栅相乘(得到的图上面有条纹), 再分别进行傅里叶变换,再滤波把条纹滤掉,再逆傅里叶变换就能得到没有条纹的RGB三个字, 颜色还是一样的,然后把分开的三个字合成一幅图 。下面是我的程序,但是我只懂得把条纹先画出来再相乘,滤波也不对等,请高手帮帮忙啊 急 可能有一些表述不是很清楚请谅解
clc
I=imread('rgb.jpg');%读取图像;
a=im2double(I);
r(:,:,1)=a(:,:,1);
r(:,:,2)=(0);
r(:,:,3)=(0);
r1=im2double(r);
M=imread('竖条纹.png');
M1=im2double(M);
N=r1.*M1;
N1=rgb2gray(N);
figure(1),imshow(N)
g(:,:,2)=a(:,:,2);
g(:,:,1)=(0);
g(:,:,3)=(0);
g1=im2double(g);
Q=imread('横条纹.png');
Q1=im2double(Q);
q=g1.*Q1;
q1=rgb2gray(q);
figure(2),imshow(q)
b(:,:,3)=a(:,:,3);
b(:,:,1)=(0);
b(:,:,2)=(0);
b1=im2double(b);
P=imread('斜条纹.png');
P1=im2double(P);
p=b1.*P1;
p1=rgb2gray(p);
figure(3),imshow(p)
j=fft2(N);
k=fftshift(j);
R=log(abs(k));
D1=abs(k);
H1=rgb2gray(D1);
figure(4),imshow(D1*0.001)
j1=fft2(q);
k1=fftshift(j1);
G=log(abs(k1));
D2=abs(k1);
figure(5),imshow(D2*0.001)
j2=fft2(p);
k2=fftshift(j2);
B=log(abs(k2));%)分别对红、绿、蓝三原色的数据矩阵进行快速傅里叶变换;
D3=abs(k2);
figure(6),imshow(D3*0.001)
h1=fspecial('laplacian');
B1=imfilter(j,h1);
f1=ifft2(B1);%对B1进行逆傅里叶变换;
B2=imfilter(j1,h1);
f2=ifft2(B2);%对B2进行傅里叶变换;
B3=imfilter(k2,h1);
f3=ifft2(B3);%对B3进行傅里叶变换;
figure(7);
imshow(f3)
[ 本帖最后由 坏心眼的鱼 于 2010-5-31 14:20 编辑 ] |