我编写matlab程序时遇到问题,真的需要你的帮助
我有一个二进制图像(只有0和1)我使用haar小波变换通过matlab代码:
[LL,LH,HL,HH] =dwt2( f, 'haar');
我还有四个子图像。
LL
:最大值为2,min为0(此时我们有0 - 0.5 - 1 - 1.5 - 2)
HL
和LH
以及HH
:max为1,min为-1(在此我们有-1 - ( - 0.5) - 0 - 0.5 - 1)< / p>
但是现在,因为这是一个二进制图像所以我希望我们的结果只属于0和1.可能我们可以使用低通滤波器是OR逻辑和高通滤波器是XOR。
但我不知道如何解释这个和代码,请帮助我。
非常感谢
答案 0 :(得分:0)
这是我的代码关于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,[]);
%------------------------------