现在我们做了一个大的飞跃,我们应该将滤镜应用于任何矩形彩色图片。我知道如果我imread(picture)
它将创建一个数组矩阵,其中三个值代表红色,绿色和蓝色(RGB)。我也理解,主要是说我必须使用for
循环来遍历每个颜色通道。但是,它让我了解如何为不同的频道创建它并将图像重新组合在一起。
我在这里经历了一些很棒的答案并且能够重建女人和fruit basket example,但不幸的是他们都使用了预设的DWT
功能,但我不能这样做。
最终代码应该是这样的: 1)询问用户需要多少次迭代:
pic = input('What picture would you like? Type "1" for an example or a URL ');
2)向用户询问阈值
t = input('Threshold?');
3)询问用户迭代次数(1-3)
i = input('How many iterations do you want? Choose 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);
现在我们必须使用用户指定的多次迭代执行Daubchechies小波变换,同时将阈值绝对值之外的值设置为零。在重建图像之前。
我希望我提供了足够的信息,如果我已经出错了,请纠正我(我希望不是)。每次我实现循环并尝试解决通道时,我的代码都会开始破坏。仅供参考之用是Haar变换适用于原始cameraman.tif图像:
%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
万分感谢!