Module Tiền xử lý

Một phần của tài liệu đồ án tốt nghiệp chương trình với phương pháp phân tích fractal signature (Trang 51)

Nhằm nâng cao hiệu quả cho q trình phân tích, ảnh sẽ đƣợc qua khâu tiền xử lý trƣớc khi qua khâu phân tích. Trong phạm vi đề tài này khâu tiền xử lý chỉ dừng ở mức lọc và làm trơn nhiễu. Lý do là khâu phân tích sử dụng giải pháp FS khơng bị ảnh hƣởng bởi góc nghiêng của tài liệu, tham số duy nhất ảnh hƣởng đến giá trị của FS là nhiễu.

Vì bản chất của FS là đi tính hiệu thể tích của hai lớp đƣợc tạo ra từ mỗi block ảnh chuyển sang không gian 3D và dịch theo phƣơng z một khoảng ±Δ. Có thể so sánh q trình FS nhƣ đi tính thiết diện bề mặt của mỗi Block hay cịn gọi là độ nhám từ đó đƣa ra các miền giá trị FS đặc trƣng cho mỗi vùng (Text, Graphic,…) (Hình-30). Từ đó dễ nhận ra rằng nếu tồn tại các nhiễu dạng muỗi thì có thể làm một vùng nền (độ nhám =0) trở thành một vùng bề mặt cực nhám dẫn đến FS của nó có thể trùng vào miền Text hoặc Graphic. Để khắc phục một giải pháp là khử và làm trơn nhiều nhằm làm giảm ảnh hƣởng của vùng nhiễu muỗi lên vùng nền và ảnh.

Hình 30: Ví dụ một bolck chuyển sang dạng bề mặt trong khơng gian

3D

Hình 31: Ví dụ chuyển ảnh chữ "c" sang dạng bề mặt trong khơng gian 3DII.3.4. Phân tích sử dụng giả pháp Fractal Signature II.3.4. Phân tích sử dụng giả pháp Fractal Signature

Chi tiết thuật toán FS[1]

Đầu vào: Ảnh đa cấp xám của một trang tài liệu F; Đầu ra: Anh đã khoanh vùng vùng văn bản và đồ họa;

Thuật toán:

Trƣớc tiên ta chia F thành n vùng khơng trùng nhau có kích thƣớc NxN gọi là Rk(x,y), trong đó k là vùng NxN thứ k của tài liệu và k=1,2,…,n

ớc 1:

For x=1 to Xmax do For y=1 to Ymax do

ớc 2:

Tính hàm mức xám gk(x,y) cho F;

For x=1 to Xmax do

For y=1 to Ymax do

• Bƣớc 2.1: Khởi tạo cho δ = 0 khi đó lớp trên và lớp dƣới của Blanket đƣợc chọn bằng với hàm mức xám gk(x,y) nhƣ

sau:

;

• Bƣớc 2.2 Cho δ = δ1

a) đƣợc tính theo cơng thức sau:

b) đƣợc tính theo cơng thức sau:

c) Thể tích của Blanket đƣợc tính theo cơng thức sau:

• Bƣớc 2.3: Cho δ = δ2

a) đƣợc tính theo cơng thức sau:

b) đƣợc tính theo cơng thức sau:

c) Thể tích của Blanket đƣợc tính theo cơng thức sau:

ớc 3:

ớc 4:

Tổ hợp các FS thành FS của tài liệu theo công thức sau:

Nhận xét: Dễ nhận thấy với một ảnh đầu vào có cùng kích thƣớc thì tốc độ thực hiện

thuật tốn là khơng đổi và chỉ phải duyệt qua mỗi điểm ảnh một lần duy nhất.  Ví dụ:

Giả thiết ta có gk(x,y) là

Cho δ = 1, ta có:

Thu đƣợc kết quả là:

Ta có:

Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy

Ví dụ về một kết quả áp dụng thuật tốn này:

Hình 32: (a) Ảnh một tài liệu gốc, (b) kết quả sau khi áp dụng FS

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

II.4. Kết luận

Sau chƣơng 2 này, ta đã có đƣợc các module và cơng việc của mỗi module trong hệ thống demo phân tích trang tài liệu sẽ đƣợc cài đặt, từ những cơ sở phân tích ở trên sẽ làm cơ sở để triển khai cài đặt trên máy tính cho thuật tốn Fractal Signature và các chức năng của chƣơng trình demo.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

56

h tt p : // ww w . l r c - t nu . e du . v n

Chƣơng III: XÂY DỰNG CHƢƠNG TRÌNH THỬ NGHIỆM

Chƣơng này tập trung vào việc xây dựng và cài đặt các chức năng của chƣơng trình demo với mục đích chính là phân tich đƣa ra cấu trúc vật lý của ảnh đầu vào là ảnh đa cấp xám có độ phức tạp cao sử dụng thuật toán Fractal Signature. Đồng thời triên khai cả thuật toán Top-down nhằm so sánh vơi thuật toán Fractal Signature

III.1. Yêu cầu hệ thống

Theo nhƣ phần lựa chọn giải pháp (II.2) thì đề tài tập trung vào việc triển khai phƣơng pháp phân tích Fractal Signature và để có thể so sánh hiệu quả của FS thì chƣơng trình thử nghiệm sẽ cài đặt thêm phƣơng pháp Top-down. Với mục đích này thì những yêu cầu cho chƣơng trình nhƣ sau:

- Cho phép chọn phân tích ảnh theo thuật tốn FS hoặc Top-down - Cho phép tùy chọn ảnh đa cấp xám đầu vào dạng *.jpg

- Ảnh kết quả đã khoanh vùng các vùng văn bản hoặc đồ họa - Tự động lọc và làm trơn nhiễu ảnh đầu vào trƣớc khi phân tích - Chƣơng trình đƣợc cài đặt trên MatLab v7.0

*.jpg Gray Image Lọc và làm trơn nhiễu Phân tích cấu trúc vật lý Ảnh ra đã khoanh vùng vă bản và đồ họa Tùy chọn FS hoặc Top- down

III.2. Thiết kế chƣơng trình

III.2.1.Cấu trúc dữ liệu

Ảnh đầu vào là ảnh đa cấp xám dạng *.jpg, sau khi đƣợc tải vào bộ nhớ sẽ đƣợc giải mã và chuyển sang dạng ma trận điểm ảnh (quá trình này đƣợc thực hiện tự động khi sử dụng hàm đọc ảnh trong matlab).

Nhƣ vậy về mặt logic thì cấu trúc vùng nhớ sử dụng để lƣu ảnh là một mảng hai chiều Im x n có kích thƣớc (m x n) phần tử.

Image = { I[i,j], i = 1..m, j = 1..n}

Trong đó I[i,j] là giá trị độ xám của điểm ảnh tƣơng ứng với tọa độ (i,j) trong ảnh

Ảnh 36 26 80 60 90 15 14 53 81 65 16 85 65 73 18 8 68 71 27 28 35 93 7 12 96 1 29 10 35 64 85 22 68 69 33 44 52 63 80 30 89 18 93 60 97 98 89 11 40 17 15 8 15 22 42 34 92 87 79 72 44 35 39 39 24 86 56 45 87 92 19 27 46 53 11 94 52 83 71 98 7 72 64 27 41 58 31 26 37 18 4 56 4 91 86 79 11 73 14 19 7 13 75 2 21 50 38 57 91 19 Ma trận điểm ảnh

Thông thƣờng với ảnh đa cấp xám thì giá trị độ xám của mỗi điểm ảnh nằm trong khoảng [0..255], nhƣ vậy kích thƣớc tối thiểu cho mỗi I[i,j] là 1Byte.

Chƣơng trình sẽ sử dụng mảng có thuộc tính nhƣ sau để lƣu trữ ảnh: - Mảng I hai chiều với I[i,j] kiểu Byte (Max(I[i,j])=255)

- Kích thƣớc của mảng là m x n với m là chiều cao của ảnh, n chiều rộng của ảnh và m, n kiểu Double (max(m/n)=232)

n (Double)

m (Double)

.. .. .. .. .. .. 1 Byte

Ảnh I

- Cấu trúc lƣu trữ lƣợc đồ xám (kết quả của các phép chiếu nghiêng).

Phép chiếu nghiêng là đi tính tổng các điểm đen theo phƣơng vng góc với hƣớng chiếu. Kết quả của phép chiếu sẽ đƣợc lƣu trữ vào một mảng một chiều H có kích thƣớc d phần tử. Trong dó H[i] (với i = [1..d]) là tổng số điểm đen của cột thứ i theo phƣơng chiếu.

III.2.2. Module chuẩn hóa ảnh

Thuật tốn FS tính giá trị FS cho từng khối Block trong ảnh, vì thế cần phải chia ảnh thành các block có kích thƣớc bằng nhau trƣớc khi thực hiện thuật tốn. Giả thiết kích thƣớc của mỗi Block là (k x q), để việc tính FS cho các block khơng gặp trƣờng hợp đặc biệt (Kích thƣớc ảnh khơng bằng nguyên lần của Block) ta sẽ nối thêm vào chiều ngang và dọc của ảnh vùng nền đủ để sao cho kích thƣớc ảnh mới bằng một số nguyên lần của Block.

Block Ảnh gốc Phần dƣ không đủ 1 block Phần nền bổ xung cho đủ 1 block  Giả i t huật: Input: - Ảnh I có kích thƣớc m x n - Block có kích thƣớc k x q (k,q<m,n)

Output: Ảnh I có kích thƣớc m’ x n’ sao cho m’ = i*k và n’ = j*q (với i,j € N)

Thuật tốn: B1: Tính m’

Nếu (m/k = nguyên (m/k)) thì m’=m; Trái lại m’ = nguyên (m/k))*k + k; B2: Tính n’

Nếu (n/q = ngun (n/q)) thì n’=n; Trái lại n’ = nguyên (n/q))*q + q;

% chuan hoa kich thuoc anh the nguyen lan cua NxN %chuan chieu cao anh

if (chieucao/N)>round(chieucao/N)

chieucao=round(chieucao/N)*N+N;

else

chieucao=round(chieucao/N)*N;

end

%chuan chieu rong anh

if (chieurong/N)>round(chieurong/N) chieurong=round(chieurong/N)*N+N; else chieurong=round(chieurong/N)*N; end %%%%%%%%%%%%%%%%%%%%

Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy

III.2.3. Module giao diện chính

Giao diện chính đƣợc thiết kế đơn giản với một số chức năng chính nhƣ sau:

Vùng hiển thị ảnh gốc Vùng hiển thị ảnh kết quả

Chọn phân tích kiểu FS Chọn ảnh mới Chọn phân tích kiểu Top- down Mơ phỏng FS

Số hóa bởi Trung tâ

Hình 33: Giao diện chính

m Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

ng uồn:

Một số mã nguồn sự kiện cho các Button chính trên giao diện chính (cài dặt trong Matlab)

- Button chọn ảnh:

function pushbutton1_Callback(hObject, eventdata, handles)

% Hop thoai chon uong dan?

[fname,pname] = uigetfile('*.jpg','Hay chon mot anh da cap xam');

if fname~=0 % da chon 1 file

set(handles.path,'String',[pname,fname]); % hien thi duong dan cua file anh axes(handles.anhgoc);

imshow([pname,fname]); axes(handles.anhdich);

end

- Button Top-Down

function pushbutton2_Callback(hObject, eventdata, handles)

imshow('anhmau\running.jpg') pause(0.5)

filename=get(handles.path,'string');

topdown % Gọi chương trình con TOPDOWN clear all

- Button Fractal Signature

function pushbutton3_Callback(hObject, eventdata, handles)

imshow('anhmau\running.jpg') pause(0.5)

filename=get(handles.path,'string');

Fsign % Gọi chương trình con Fractal signature clear all

III.2.4. Module phân tích Top-down (TD)

Thuật tốn phân tích TD đƣợc thiết kế theo kiểu đệ quy, và cần tham số chiều cao của font chữ. Để tính chiều cao của font chữ có 2 giải pháp

- Một là cho phép ngƣời sử dụng nhập vào. - Hai là tự động dò theo thuật tốn sau:

B1: Tính lƣợc đồ chiếu nghiên theo phƣớc thẳng đứng

B2: Tìm độ rộng xuất hiện nhiều nhất của các “cột” trong lƣợc đồ chiếu nghiêng, đây xấp xỉ bằng chiều cao của font chữ.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

65

h tt p : // ww w . l r c - t nu . e du . v n

Ảnh vào Lƣợc đồ chiếu đứng

Thuật tốn phân tích TD đƣợc thiết kế theo kiểu đệ quy, và cần tham số chièu cao của font chữ.

Thuật tốn phân tích TD đƣợc thiết kế theo kiểu đệ quy, và cần tham số chièu ~k ~k ~k ~y Cột

Thành phần độ rộng ≈k xuất hiện nhiều nhất => k là chiều cao của font chữ

Trong đề tài này việc xác định chiều cao đƣợc dò tự động theo phƣơng pháp trên.  Giải t huật T op -Down

Input: Ảnh đa cấp xám I kích thƣớc m x n, chiều cao font chữ k Output: Ảnh đã đƣợc phân đoạn văn bản và đồ

họa. Thuật toán:

Proceduce Topdown (I,x,y,m,n,k) // I là ảnh đầu vào, m và n là kích thƣớc vùng ảnh // k chiều cao font chữ

// x,y là tọa độ hàng và cột

// của điểm ảnh góc trái trên cùng

Begin

B1: Tính lƣợc đồ chiếu đứng cho ảnh I đƣợc kết quả là mảng A gồm m phần tử B2: Xác định các “cột” trên lƣợc đồ A

For (mỗi cột(i) trong lƣợc đồ A) do IF độ rộng cột(i) ≈ k then

Khoanh vùng trên ảnh tại vị trí của cột(i) chiều dài n là vùng văn bản; Else

End

B2.1: Tính lƣợc đồ chiếu ngang cho vùng ảnh chứa cột(i) đƣợc

kết quả là mảng B gồm n phần tử

B2.2: Xác định các cột trên B

IF nếu số cột của A = 1 và số cột của B = 1 then khoanh vùng là Ảnh; Else

For mỗi Cột(j) trên B do

TopDown(I, x(cột(i)), y(cột(j)), độ rộng(cột(i)), độ rộng(cột(j)), k);

End for End if End if End if End for  Mã nguồn: function ketqua=phantichtrong(start,limit,letrai,lephai,anh,nguongtach,chieu_cao_hang) y=anh; chieucao=limit; chieurong=lephai;

%Phan nguong va tim hinh chieu doc

% z=zeros(1,size(y,1));% z la hinh chieu doc

z=zeros(1,limit-start+1);% z la hinh chieu doc

for i=start:chieucao for j=letrai:chieurong

if (y(i,j)>nguongtach) % vung nen else

z(i-start+1)=z(i-start+1)+1; % tinh cho bieu do xam

end end end

% tach khoi bang cach vao tung khoi van ban ngang tim hinh chieu ngang

i=start; start_t=i; limit_t=i;

while (i<=chieucao)

while (i<=chieucao)&(z(i-start+1)>(2*min(z))) %di het vung van ban de tinh chieu cao

i=i+1;

end

limit_t=i-1; %limit-start la chieu cao vung van ban ngang % tinh luoc do xam cho moi vung ngang

if (start_t<chieucao)&(limit_t>start_t) if limit_t>chieucao

end y=phantich(start_t,limit_t,y,nguongtach,chieu_cao_hang,letrai,lephai); end while (i<=chieucao)&(z(i-start+1)<=(2*min(z))) i=i+1; end start_t=i; end %%%%%%%%%%%%%%%%%%% ketqua=y;

III.2.5. Module phân tích Fractal Signature

Giải t huật Fractal Sig nat ure

Input: Ảnh đa cấp xám I, kích thƣớc block m x n Output: Ảnh đã phân đoạn văn bản và đồ họa Thuật tốn:

B1: Chuẩn hóa kích thƣớc ảnh đƣợc I’ (trình bày ở phần IV.2.2) B2: Lọc và làm trơn nhiễu

B3: Tách nền ra khỏi nội dung ảnh B4:

Chia ảnh I’ thành q Block có kích thƣớc (m x n) For (mỗi Block(i) của I’) Do

B4.1: Chọn ∂ = 1

 Tính giá trị lớp trên của block(i):

 Tính giá trị lớp dƣới của block(i)

 Tính thể tích của Blanket

B4.2: Chọn ∂ = 2

 Tính giá trị lớp dƣới của block(i)

 Tính thể tích của Blanket

(với x,y thuộc Block(i)) B4.3: Tính FS(Block(i)) =

End for

B5: Chọn ngƣỡng phân tách vùng nền, văn bản và đồ họa  ng uồn:

for i=1:round(chieucao/N) for(j=1:round(chieurong/N))

%%%%%%%%%% thao tac voi block thu K

u_layer1(:,:)=0; b_layer1(:,:)=0; u_layer2(:,:)=0; b_layer2(:,:)=0; vol1=0; vol2=0;

block_k(2:N+1,2:N+1)=anh((i-1)*N+1:i*N,(j-1)*N+1:j*N);

% tinh gia tri cho lop tren va duoi voi delta1 cho moi vung thu k for ki=2:N+1 for kj=2:N+1 g1_u=block_k(ki,kj) +1; g1_b=block_k(ki,kj)-1; g2=block_k(ki,kj+1); g3=block_k(ki,kj-1); g4=block_k(ki+1,kj); g5=block_k(ki-1,kj); temp=[g1_u g2 g3 g4 g5 g1_b]; u_layer1(ki,kj)=max(temp(1:5)); b_layer1(ki,kj)=min(temp(2:6)); vol1=vol1 + (u_layer1(ki,kj)-b_layer1(ki,kj)); % tinh xong lop tren va duoi voi delta1 % tinh gia tri cho lop tren va duoi voi delta2 g1_u=u_layer1(ki,kj)+1; g1_b=b_layer1(ki,kj)-1; g2=u_layer1(ki,kj+1); g3=u_layer1(ki,kj-1); g4=u_layer1(ki+1,kj); g5=u_layer1(ki-1,kj); temp=[g1_u g2 g3 g4 g5 g1_b]; u_layer2(ki,kj)=max(temp(1:5)); b_layer2(ki,kj)=min(temp(2:6)); vol2=vol2+(u_layer2(ki,kj)-b_layer2(ki,kj));

%%%%%%%%%%%%%%%% tinh xong gia tri cua lop tren duoi voi delta2 end end % tinh FS k=k+1; FS(k)=(vol2-vol1)/2; end end

%%%%%%%%%%%%%%%% Tach anh va text k=0;; anh=cat(3,anh,anh,anh); nguong=min(FS) +50; for i=1:round(chieucao/N) for(j=1:round(chieurong/N)) k=k+1; if (FS(k)<nguong)|(FS(k)>4000) % text for ki=1:N for kj=1:N anh((i-1)*N+ki,(j-1)*N+kj,:)=255-anh((i-1)*N+ki,(j-1)*N+kj); end end

else % vung anh for ki=1:N for kj=1:N anh((i-1)*N+ki,(j-1)*N+kj,1)=150; anh((i-1)*N+ki,(j-1)*N+kj,3)=150; end end end end end

III.2.6. Module lọc và làm trơn nhiễu

Có rất nhiều kỹ thuật lọc nhiễu, tuy nhiên nhƣ đã trình bày ở phần II.1.4 bản chất của FS có thể coi nhƣ đi xác định đặc trƣng độ nhám của các bề mặt thuộc vùng nền, văn bản hay đồ họa. Để nhiễu bớt ảnh hƣởng đến đặc trƣng này thì giải pháp làm trơn nhiễu là hiệu quả nhất nhằm làm cho các điểm ảnh gần nhau có đặc tính tƣơng tự nhau. Điều này sẽ làm cho độ nhám mà nhiễu gây ra là không đáng kể.

Trong đề tài này sử dụng phƣơng pháp lọc thông thấp[2] với ma trận cuộn sau:

%%%%%%% mat na loc loc=[0 1 0;1 2 1;0 1 0]; loc=1/8*loc;

%%%%%%% dung ham loc anh=conv2(anh,loc);

III.2.7. Module mơ phỏng thuật tốn FS

Module mơ phỏng thuật tốn FS chỉ mang tính nghiên cứu q trình làm việc của Fractal Signature. Về mặt thuật toán giống nhƣ III.2.5 chỉ khác khơng cần tính thể tích của các Blanket đƣợc tạo ra mà tiến hành vẽ các blanket đó trong khơng gian 3D.

Giải t huật:

Input: Ảnh đa cấp xám I, kích thƣớc block m x n Output: Demo

Thuật tốn:

B1: Chuẩn hóa kích thƣớc ảnh đƣợc I’ (trình bày ở phần IV.2.2) B2: Lọc và làm trơn nhiễu

B3: Tách nền ra khỏi nội dung ảnh B4:

Chia ảnh I’ thành q Block có kích thƣớc (m x n) For (mỗi Block(i) của I’) Do

B4.1: Chọn ∂ = 1

 Tính giá trị lớp trên của block(i):

 Tính giá trị lớp dƣới của block(i)

B4.2: Chọn ∂ = 2

 Tính giá trị lớp trên của block(i):

(với x,y thuộc Block(i))

B4.3: Vẽ các Blanket trong không gian 3D End for

ng uồn:

for i=1:round(chieucao/N) for(j=1:round(chieurong/N))

%%%%%%%%%% thao tac voi block thu K

u_layer1(:,:)=0; b_layer1(:,:)=0; u_layer2(:,:)=0; b_layer2(:,:)=0; vol1=0; vol2=0;

block_k(2:N+1,2:N+1)=anh((i-1)*N+1:i*N,(j-1)*N+1:j*N);

% tinh gia tri cho lop tren va duoi voi delta1 cho moi vung thu k for ki=2:N+1 for kj=2:N+1 g1_u=block_k(ki,kj) +1; g1_b=block_k(ki,kj)-1; g2=block_k(ki,kj+1); g3=block_k(ki,kj-1); g4=block_k(ki+1,kj); g5=block_k(ki-1,kj); temp=[g1_u g2 g3 g4 g5 g1_b]; u_layer1(ki,kj)=max(temp(1:5)); b_layer1(ki,kj)=min(temp(2:6)); vol1=vol1 + (u_layer1(ki,kj)-b_layer1(ki,kj)); % tinh xong lop tren va duoi voi delta1 % tinh gia tri cho lop tren va duoi voi delta2 g1_u=u_layer1(ki,kj)+1; g1_b=b_layer1(ki,kj)-1; g2=u_layer1(ki,kj+1); g3=u_layer1(ki,kj-1); g4=u_layer1(ki+1,kj); g5=u_layer1(ki-1,kj); temp=[g1_u g2 g3 g4 g5 g1_b]; u_layer2(ki,kj)=max(temp(1:5)); b_layer2(ki,kj)=min(temp(2:6)); vol2=vol2+(u_layer2(ki,kj)-b_layer2(ki,kj));

%%%%%%%%%%%%%%%% tinh xong gia tri cua lop tren duoi voi delta2 end

end

% ve he truc toa do va anh 3D

trucx=[1:N+2]; trucy=[1:N+2]; meshgrid(trucx,trucy); % axes(handles.anhgoc); subplot(2,2,1); anhtem=goc; anhtem((i-1)*N+1:(i-1)*N+N,(j-1)*N+1:(j-1)*N+N)=0; imshow(anhtem); subplot(2,2,2); %axes(handles.uper);

end surf(trucx,trucy,u_layer2) subplot(2,2,3); %axes(handles.block); imshow(255-anh((i-1)*N+1:(i-1)*N+N,(j-1)*N+1:(j-1)*N+N)); subplot(2,2,4);

Một phần của tài liệu đồ án tốt nghiệp chương trình với phương pháp phân tích fractal signature (Trang 51)

Tải bản đầy đủ (DOCX)

(116 trang)
w