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
Mã 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;