MatLab Daubechies彩色图片滤镜-不使用预设功能

MatLab Daubechies彩色图片滤镜-不使用预设功能,matlab,image-processing,fft,wavelet,haar-wavelet,Matlab,Image Processing,Fft,Wavelet,Haar Wavelet,这是我的第一篇文章。我希望有人能帮助我开始。所以我一直在为一个班级项目做图像处理。我们一开始很简单,从头开始创建了一个Haar变换函数,非常简单,然后将其应用于cameraman.tif等预设图片。但是,该示例图片是灰度和方形矩阵 现在我们做了一个很大的飞跃,我们应该把滤镜应用到任何矩形的彩色图片上。我知道如果我imread(picture)它将创建一个数组矩阵,其中三个值表示红色、绿色和蓝色(RGB)。我也明白,主要来说,我必须使用for循环来遍历每个颜色通道。然而,如何为不同的频道创建它,并

这是我的第一篇文章。我希望有人能帮助我开始。所以我一直在为一个班级项目做图像处理。我们一开始很简单,从头开始创建了一个Haar变换函数,非常简单,然后将其应用于cameraman.tif等预设图片。但是,该示例图片是灰度和方形矩阵

现在我们做了一个很大的飞跃,我们应该把滤镜应用到任何矩形的彩色图片上。我知道如果我
imread(picture)
它将创建一个数组矩阵,其中三个值表示红色、绿色和蓝色(RGB)。我也明白,主要来说,我必须使用
for
循环来遍历每个颜色通道。然而,如何为不同的频道创建它,并将图像重新组合在一起,这让我大吃一惊

我在这里找到了一些非常棒的答案,并且能够重建女人,但不幸的是,他们都使用了预设的
DWT
功能,我不能这样做

最后的代码应该是这样的: 1) 询问用户需要多少次迭代:

pic =   input('What picture would you like? Type "1" for an example or a URL  ');
2) 询问用户有关阈值的信息

t   =   input('Threshold?');
3) 询问用户迭代次数(1-3)

作为示例图像,我选择了一个矩形位图,因为它还没有被压缩,并且使用“1”作为简单的标识符:

if pic ==1;
   A = imread ('http://readingeagle.com/BlogUploads/11/Birds%20in.bmp');
else A = imread(pic) ;
end

%[m,n]=Matrix dimensions, c=channels
[m,n,c]=size (A) ; 

%plot original
imshow (A);  
现在我们必须执行Daubchecheches小波变换,不管用户指定多少次迭代,同时将阈值绝对值之外的值设置为零。在重建图像之前

我希望我提供了足够的信息,如果我已经错了,请纠正我(我希望不是)。每次我实现循环并尝试寻址通道时,我的代码就开始中断。以下是适用于原始cameraman.tif图像的Haar变换,仅供参考:

%HWTM - Haar Wavelet Transform Matrix

function W = HWTM(N)

while mod(N,2) ~= 0;
    N = N-1;
end 

W=zeros(N);
for k=1:N/2
    W(k,2*k)=1/2;
    W(k,2*k-1)=1/2;
    W(N/2+k,2*k)=1/2;
    W(N/2+k,2*k-1)=-1/2;
end
end

万分感谢

您收到了哪条错误消息?此外,我们还需要查看实际中断的代码!
%HWTM - Haar Wavelet Transform Matrix

function W = HWTM(N)

while mod(N,2) ~= 0;
    N = N-1;
end 

W=zeros(N);
for k=1:N/2
    W(k,2*k)=1/2;
    W(k,2*k-1)=1/2;
    W(N/2+k,2*k)=1/2;
    W(N/2+k,2*k-1)=-1/2;
end
end