1

matlab プログラムをコーディングするときに問題が発生し、本当に助けが必要です

バイナリ イメージがあります (0 と 1 のみ)。Matlab コードで haar ウェーブレット変換を使用します。

[LL,LH,HL,HH] =dwt2( f, 'haar');

4 つのサブイメージもあります。

LL: 最大値は 2 で、最小値は 0 です (この場合、0 - 0.5 - 1 - 1.5 - 2 になります)

HLand LHand HH: max は 1 で min は -1 です (この場合、-1 - (-0.5) - 0 - 0.5 - 1 になります)

しかし今、これはバイナリ イメージなので、結果が 0 と 1 に属するようにしたいのです。

しかし、これとコードを説明する方法がわかりません。助けてください。

どうもありがとう

4

1 に答える 1

0

リンク用紙 : paper
テストドキュメント : testimage

これは、haar ウェーブレット変換の問題を解決する私のコードです。テキスト regconize に問題があると思います。テストではテキストが返されません (テキストのマトリックスはどこでも 0 です)。したがって、HL と LH については別の定義が必要です。

もう1つは、紙の式(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,[]);

%------------------------------
于 2014-05-14T12:30:05.450 に答える