MatLab Daubechies彩色图片形式的过滤器 - 不使用预设功能

时间:2012-11-13 02:00:13

标签: matlab image-processing fft wavelet haar-wavelet

这是我的第一篇文章。我希望有人可以帮助我入门。所以我一直在为一个类项目进行图像处理。我们从头开始创建一个Haar变换函数,从而非常简单,然后将其应用于预设图片,如cameraman.tif。但是,该样本图片位于灰度和方阵上。

现在我们做了一个大的飞跃,我们应该将滤镜应用于任何矩形彩色图片。我知道如果我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

万分感谢!

0 个答案:

没有答案