2014-05-13 72 views
1

我有一個問題,當我的代碼MATLAB程序,真正需要你的幫助Haar小波變換的二值圖像

我有一個二進制圖像(只有0和1)我用Haar小波用MATLAB代碼轉換:

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

我也有四個子圖。

LL:已maximun是2和min是0(在此我們已經0 - 0.5 - 1 - 1.5 - 2)

HLLHHH:具有最大爲1,min是-1(在我們有-1 - ( - 0.5) - 0 - 0.5 - 1)

但現在,因爲這是一個二進制圖像,所以我想我們的結果只屬於0和1.可能是我們可以使用低通濾波器OR邏輯和高通濾波器是XOR。

但是我不知道如何解釋這個和代碼,請幫幫我。

謝謝你這麼多

+1

你爲什麼要改變四個子帶,使他們轉換爲0和1?難道你不想保持精度進一步分解?另外,如果將結果更改爲「[0,1]」,則無法忠實地重建原始圖像 – rayryeng

+0

您能否提供指向此文件的鏈接?這個理論對我沒有任何意義 – rayryeng

+0

感謝您的回覆,僅僅因爲我閱讀了一篇論文,通過haar小波變換來識別圖形和文本。在本文中,他們注意到,如果一個像素在HL和LH中具有高係數,意味着這是文本,而在HL和LH中低,而在LL中是高,則我看到他們注意到高係數爲1,低爲0。如果你有空閒時間,請給我一些說明,我也會把這篇文章發給你,第7-8頁的這個問題)。 (http://www.mediafire.com/download/9k7gp2c3ce032qr/1-parameter+-+free+geometric+document+layout+analysis.pdf)非常感謝你 – user3607620

回答

0

鏈接文件:paper
測試文件:testimage

這是我的代碼回合哈爾小波變換的問題。我認爲文本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,[]); 

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