Matlab 二值图像的haar小波变换

Matlab 二值图像的haar小波变换,matlab,filter,logical-operators,haar-wavelet,Matlab,Filter,Logical Operators,Haar Wavelet,我在编写matlab程序时遇到了一个问题,真的需要你的帮助 我有一个只有0和1的二值图像,我使用haar小波变换,通过matlab代码: [LL,LH,HL,HH] =dwt2( f, 'haar'); 我还有四个子图像 LH:最大值是2,最小值是0,这里是0-0.5-1-1.5-2 HL和LH和HH:最大值是1,最小值是-1,在这里我们有-1--0.5-0-0.5-1 但是现在,因为这是一个二值图像,所以我希望我们的结果只属于0和1。可能我们可以使用低通滤波器是逻辑的,而高通滤波器是异或的

我在编写matlab程序时遇到了一个问题,真的需要你的帮助

我有一个只有0和1的二值图像,我使用haar小波变换,通过matlab代码:

[LL,LH,HL,HH] =dwt2( f, 'haar');
我还有四个子图像

LH:最大值是2,最小值是0,这里是0-0.5-1-1.5-2

HL和LH和HH:最大值是1,最小值是-1,在这里我们有-1--0.5-0-0.5-1

但是现在,因为这是一个二值图像,所以我希望我们的结果只属于0和1。可能我们可以使用低通滤波器是逻辑的,而高通滤波器是异或的

但我不知道如何解释这个和代码,请帮助我

非常感谢

链接文章: 测试文件:

这是我关于haar小波变换问题的代码。我认为文本regconize有问题,它在我们的测试矩阵中没有返回文本,文本到处都是0。所以我们需要另一个关于HL和LH的定义

另外,在论文的等式13中,我们对每一类使用imfilter。我不明白等式14

多谢各位

clear all;
close all;
eps = 0.0000000001; %make epsilon
f  = imread('testf3.png');
f  = ~f;
%f = rgb2gray(f);
%f = im2bw(f);
imwrite(f,'testhaar.png');
%imshow(f);
[LL,LH,HL,HH ] = haarwavelet(f);
subplot(2,2,1);imshow(LL);title('LL image');
subplot(2,2,2);imshow(LH);title('LH image');
subplot(2,2,3);imshow(HL);title('HL image');
subplot(2,2,4);imshow(HH);title('HH image');

[m n] = size(HL);
M = zeros(size(HL));
% 9.5 is text c = T
% 6.5 is image c = I
% 5.5 is back ground c = X
% 7.5 is vertical line c = V
% 8.5 is horizontal line c = H
testtext       = M;
testimage      = M;
testvertical   = M;
testhorizontal = M;
testbackground = M;
for i = 1:m
    for j = 1:n
        if (abs(1 - HL(i, j)) < eps && abs(1 - LH(i, j)) < eps)
           M(i, j) = 9.5; %text 
           testtext(i, j) = 9.5;
       end
        if (abs(1 - HL(i, j)) < eps && abs(0 - LH(i, j)) < eps)
           M(i, j) = 7.5; %vertical line
           testvertical(i, j) = 7.5;
        end
        if (abs(0 - HL(i, j)) < eps && abs(1 - LH(i, j)) < eps)
          M(i, j) = 8.5; %horizontal line
          testhorizontal(i, j) = 8.5;
        end
        if (abs(0 - HL(i, j)) < eps && abs(0 - LH(i, j)) < eps && abs(0-LL(i, j)) < eps)
           M(i, j) = 6.5; % image
           testimage(i, j) = 6.5;
        end
        if (abs(0 - HL(i, j)) < eps && abs(0 - LH(i, j)) < eps && abs(2-LL(i, j)) < eps)
           M(i, j) = 5.5; % back ground
           testbackground(i, j) = 5.5;
        end
    end
end
% figure, imshow(M);
maskIT = [0 0.5 0;0.5 1 0.5;0 0.5 0];
maskH  = [0 0 0;1 1 1;0 0 0];
maskV  = [0 1 0; 0 1 0; 0 1 0];
%---------------------------------
restext=imfilter(double(testtext),maskIT);
figure;imshow(restext,[]);
%----------------------------------
resimage=imfilter(double(testimage),maskIT);
figure;imshow(resimage,[]);
%----------------------------------
resvertical=imfilter(double(testvertical),maskV);
figure;imshow(resvertical,[]);
%-------------------------------------
reshorizontal=imfilter(double(testhorizontal),maskH);
figure;imshow(reshorizontal,[]);

%------------------------------

为什么要更改四个子带以便将它们转换为0和1?难道你不想在进一步分解时保持这种精度吗?此外,如果您将结果更改为[0,1],您将无法忠实地重建原始图像。您能否提供指向上述论文的链接?这个理论对我的回答毫无意义,因为我读了一篇关于通过haar小波变换识别图形和文本的论文。在本文中,他们注意到,如果一个像素在HL和LH中的系数高,这意味着这是文本,在HL和LH中的系数低,在LL中的系数高,这是图像,我看到他们注意到,高系数是1,低系数是0。我还寄给你这篇论文,这是第7-8页的问题,如果你有空,请给我一些提示。谢谢你们,他们似乎只考虑0和1的值。忽略任何其他值0.5或<0。是否可以将LL值更改为-1到1。因为它与HL和LH,HH完全不同。我想我现在会尝试编码,希望这能奏效。这对我来说真的很重要。我不知道我们是否有另一种技术来检测文档网中的图像和文本?我还将在此附上一个文档示例:。我遵循上面的文章,但我有一些问题,一个例子是平滑投影第3页的内核s。我可以继续和你谈谈这个问题吗?我可以把我的代码发给你,这样我们就更容易理解了。谢谢如果你还有其他问题,发表你自己的问题。这不是对当前问题的回答。