I. Đặt vấn đề
Ngày nay việc sử dụng máy tính để lưu trữ tài liệu không còn là vấn đề mới
mẻ và cần phải chứng minh tính an toàn, thuận tiện của nó. Tuy nhiên việc sử dụng
giấy để lưu trữ tài liệu trong một số mục đích vẫn không thể thay thế được (như
báo, sách, công văn, .). Hơn nữa lượng tài liệu được tạo ra từ nhiều năm trước vẫn
còn rất nhiều mà không thể bỏ đi được vì tính quan trọng của chúng.
Chúng ta mong muốn có thể điện tử hóa hàng tỉ trang tài liệu đó và cất chúng
chỉ trong một ổ cứng kích thước bằng một cuốn sách nhỏ, tìm kiếm thông tin mà chỉ
cần tốn vài giây với một cái gõ phím Enter. Giải pháp là gì?
Thông thường người ta sẽ phải thuê người cùng với việc tốn hàng tháng,
hàng năm mới có thể nhập vào máy tính được hết lượng tài liệu đó. Hiện nay chúng
ta đã có các máy Scan với tốc độ cao, công nghệ xử lý của máy tính ngày càng siêu
việt với tốc độ tính toán vượt cả tốc độ ánh sáng, vậy tại sao chúng ta không quét
toàn bộ các trang tài liệu vào và chuyển chúng thành văn bản một cách tự động?
Bằng cách đó tốc độ và tính chính xác sẽ tăng hàng trăm lần trong khi chi phí
lại là cực tiểu. Vấn đề là khi quét vào máy tính chúng ta không thu được ngay các
dòng văn bản từ các trang tài liệu kia, để có thể soạn thảo, sửa chữa và tìm kiếm
như làm trên Office. Tất cả những gì thu được chỉ là các tấm ảnh của các trang văn
bản, máy tính lại đối xử công bằng như nhau với mọi điểm ảnh, máy tính không có
“mắt” như chúng ta để biết đâu là điểm ảnh của chữ, đâu là điểm ảnh của đối tượng
đồ họa.
Một giải pháp được nghĩ đến ngay đó là đó là xây dựng các hệ thống nhận
dạng chữ, trong tấm ảnh chứa cả chữ và đối tượng đồ họa cần tách và chuyển thành
dạng trang văn bản, từ đó có thể mở và soạn thảo được trên các trình soạn thảo văn
bản.
Một cách tổng quát thì cách thức làm việc của một hệ thống nhận dạng chữ
như sau[5]:
1. Chụp ảnh các trang tài liệu trên giấy và lưu lại trong máy tính dưới dạng hình
ảnh.
2. Sử dụng một chương trình xử lý ảnh để phân tích hình ảnh sau khi quét, đọc
được ký tự trên hình ảnh đó và ghi lại vào máy tính theo cách mà máy tính
quản lý được thông tin dữ liệu đó.
a. Bước 1 là phân tích cấu trúc của ảnh tài liệu, từ đó xác định đâu là
phần chứa chữ, đâu là phần chứa cả ảnh lẫn ký tự và đâu chỉ chứa
hình ảnh. Bước này thực sự quan trọng cho bước nhận dạng. Bởi nó
định vị chính xác cho việc áp dụng các thuật toán nhận dạng lên vùng
đã xác định tính chất, nếu bước này chính xác trước tiên nó hạn chế
thời gian cho việc nhận dạng, sau là tăng ngữ nghĩa bổ sung cho việc
nhận dạng.
b. Bước 2 nhận dạng ký tự dựa vào các tính chất của ký tự, ví dụ như sắp
xếp theo dòng, khoảng cách giữa 2 từ lớn hơn khoảng cách giữa 2 ký
tự, dùng trí tuệ nhân tạo để dự đoán các ký tự kề nhau phải như thế
nào, các từ trong câu phải như thế nào để câu có nghĩa. Từ đó có nội
dung đúng để lưu trữ, quản lý 
Trong thực tế không phải quá trình nhận dạng nào cũng chỉ trải qua hai bước
như trên, bởi vì có rất nhiều tham số ảnh hưởng đến kết quả của các chương trình
nhận dạng, như nhiễu, Font chữ, kích thước chữ, kiểu chữ nghiêng, đậm, gạch dưới.
Ngoài ra các dòng chữ cũng có thể trộn lẫn với các đối tượng đồ họa, vì thế trước
khi nhận dạng chữ, một số thao tác tiền xử lý sẽ được tác động lên ảnh như, lọc
nhiễu, chỉnh góc nghiêng và đặc biệt quan trọng là phân tích trang tài liệu để xác
định cấu trúc của trang văn bản đồng thời tách biệt hai thành phần là chữ và các đối
tượng đồ họa (phi chữ).
II. Nội dung nghiên cứu
1. Mục tiêu nghiên cứu chính của đề tài
 Tìm hiểu cấu trúc trang tài liệu (cấu trúc vật lý, logic)?
 Tìm hiểu một số kỹ thuật phân tích trang tài liệu (phân vùng, phân
đoạn, .)
 Cài đặt thử nghiệm một giải pháp phân tích có hiệu quả cao so với các
phương pháp truyền thống như top-down hay bottom-up trên ảnh vào là
ảnh đa cấp xám có cấu trúc phức tạp.
 Từ kết quả nghiên cứu có một sự chuẩn bị kiến thức đẩy đủ cho bước
nghiên cứu tiếp theo là nhận dạng ký tự quang.
2. Ý nghĩa khoa học của đề tài
 Giải quyết được vấn đề về học thuật: đề tài sẽ mang ý nghĩa cung cấp về
mặt lý thuyết để làm rõ về các phương pháp phân tích trang tài liệu.
 Đáp ứng được yêu cầu của thực tiễn: từ các lý thuyết đã được nghiên cứu,
từ đó liên hệ và gắn vào thực tiễn để có thể áp dụng vào các lĩnh vực
như: Lưu trữ thư viện, điện tử hóa văn phòng, nhận dạng và xử lý ảnh, .
3. Nhiệm vụ nghiên cứu
Mục đích của luận văn đề cập được đến hai phần:
 Phần lý thuyết: Nắm rõ và trình bày những cơ sở lý thuyết liên quan đến
cấu trúc trang tài liệu, một số kỹ thuật phân tích trang tài liệu, từ đó có để
có thể xác định tính quan trọng của bước này trong nhận dạng ký tự, đồng
thời hiểu các công việc kế tiếp cần làm trong bước nhận dạng ký tự.
 Phần phát triển ứng dụng: Áp dụng các thuật toán đã trình bày ở phần lý
thuyết từ đó lựa chọn một giải pháp tối ưu và cài đặt thử nghiệm chương
trình phân tích trang tài liệu.
4. Phương pháp nghiên cứu
 Tìm kiếm, tham khảo, tổng hợp tài liệu từ các nguồn khác nhau để xây
dựng phần lý thuyết cho luận văn.
 Sử dụng các kỹ thuật được áp dụng phân tích trang tài liệu để làm rõ bản
chất của các vấn đề được đưa ra trong phần lý thuyết.
 Xây dựng chương trình Demo.
5. Phạm vi nghiên cứu
Bài toán nhận dạng và xử lý ảnh tài liệu đã được phát triển với nhiều thành tựu
trong thực tế, có rất nhiều thuật toán tối ưu đã được các nhà khoa học đề nghị. Tuy
nhiên có thể nói chưa có một chương trình nào có thể “đọc” một ảnh văn bản như
con người, vì thực tế có rất nhiều kiểu trang văn bản khác nhau, khác nhau về cấu
trúc trình bày, ngôn ngữ, kiểu font, chữ viết tay, . Đây thực sự là một bài toán lớn,
chính vì thế trong phạm vi của luận văn chỉ tìm hiểu một số kỹ thuật phân tích trang
văn bản tiêu biểu với mục đích để so sánh và một thuật toán mới chưa được đưa ra
ở các đề tài trước. Cuối cùng, dựa vào đó để xây dựng Demo cho một ứng dụng.
Các kết quả nghiên cứu dự kiến cần đạt được:
 Tìm hiểu tài liệu liên quan đến lĩnh vực quan tâm để nắm bắt được bản
chất vấn đề đặt ra.
 Báo cáo lý thuyết
 Chương trình Demo.
III. Bố cục của luận văn
Nội dung của luận văn được trình bày trong ba chương với nội dung chính
sau.
Chương 1: Trình bày các khái niệm và mô hình tổng quát của hệ thống nhận dạng
chữ viết, cùng với một số phần mềm nhận dạng tiêu biểu hiện nay.
Chương 2: Trình bày một số phương pháp phân tích trang tài liệu, từ đó đánh giá
ưu nhược điểm để lựa chọn phương pháp Fractal Signature cho chương trình thử
nghiệm. Trình bày về thiết kế cho chương trình demo.
Chương 3: Trình bày chi tiết về việc cài đặt chương trình cũng như các thủ tục sử
dụng trong chương trình với phương pháp phân tích Fractal Signature và ảnh đầu
Mục lục
Mục lục i
Danh mục các hình ảnh iv
MỞ ĐẦU 1
I. Đặt vấn đề 1
II. Nội dung nghiên cứu . 2
III. Bố cục của luận văn . 4
Chương I. TỔNG QUAN VỀ NHẬN DẠNG CHỮ VIẾT . 5
VÀ PHÂN TÍCH TRANG TÀI LIỆU . 5
I.1. Ảnh tài liệu và nhận dạng ảnh tài liệu 5
I.1.1. Tổng quan về ảnh tài liệu 5
I.1.2. Nhận dạng tài liệu và vai trò của phân tích ảnh tài liệu . 6
I.2. Cấu trúc của ảnh tài liệu 7
I.2.1. Cấu trúc vật lý 8
I.2.2. Cấu trúc logic . 10
I.3. Quá trình phân tích tài liệu 10
I.3.1. Tiền xử lý(preprocessing): 11
I.3.2. Phân tích cấu trúc vật lý 12
I.3.3. Phân tích cấu trúc logic . 13
I.4. Một số hệ thống phân tích tài liệu hiện nay 14
I.4.1. VnDOCR 14
I.4.2. OminiPage 18
I.4.3. Finereader . 20
I.5. Kết luận . 22
Chương II: CÁC PHưƠNG PHÁP TIẾP CẬN . 23
ĐỂ PHÂN TÍCH TRANG TÀI LIỆU 23
II.1. Các phương pháp phân tích định dạng trang tài liệu . 23
II.1.1. Top-down 23
II.1.2. Bottom-up . 30
II.1.3. Phương pháp Tách và Nối thích nghi (Adaptive Split – and – Merge) . 32
II.1.4. Fractal Signature (FS) 34
II.2. Lựa chọn giải pháp . 38
II.3. Thiết kế hệ thống 39
II.3.1. Sơ đồ khối . 39
II.3.2. Ảnh đầu vào 39
II.3.3. Module Tiền xử lý . 40
II.3.4. Phân tích sử dụng giả pháp Fractal Signature 41
II.4. Kết luận . 45
Chương III: XÂY DỰNG CHưƠNG TRÌNH THỬ NGHIỆM 46
III.1. Yêu cầu hệ thống . 46
III.2. Thiết kế chương trình 46
III.2.1. Cấu trúc dữ liệu 46
III.2.2. Module chuẩn hóa ảnh . 48
III.2.3. Module giao diện chính 51
III.2.4. Module phân tích Top-down (TD) 52
III.2.5. Module phân tích Fractal Signature 55
III.2.6. Module lọc và làm trơn nhiễu . 57
III.2.7. Module mô phỏng thuật toán FS 58
III.2.8. Các hàm chức năng chính của image processing tool trong matlab sử
dụng trong chương trình 60
III.3. Kết luận và đánh giá kết quả . 62
Kết luận . 83
TÀI LIỆU THAM KHẢO . 84
Phục Lục . 85
A. Mã nguồn đầy đủ của chương trình . 85
A.1. Danh mục các chương trình con trong chương trình . 85
A.2. Sơ khối liên kết giữa các thủ tục trong chương trình . 86
A.3. Mã nguồn các module 86
                
              
                                            
                                
            
 
            
                
105 trang | 
Chia sẻ: maiphuongtl | Lượt xem: 2028 | Lượt tải: 0
              
            Bạn đang xem trước 20 trang tài liệu Đề tài Nghiên cứu hệ thống nhận dạng chữ viết, cùng với một số phần mềm nhận dạng tiêu biểu hiện nay, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
 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 toá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 
III.2. Thiết kế chƣơng trình 
III.2.1. Cấu trúc dữ liệu 
- Cấu trúc vùng nhớ lƣu ảnh: 
Ả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). 
*.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 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 47 GVHD: PGS. TS. Ngô Quốc Tạo 
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 
 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) 
36 26 80 60 90 15 14 53 81 65 16 49 
85 65 73 18 8 68 71 27 28 35 93 39 
7 12 96 1 29 10 35 64 85 22 68 91 
69 33 44 52 63 80 30 89 18 93 60 58 
97 98 89 11 40 17 15 8 15 22 42 98 
34 92 87 79 72 44 35 39 39 24 86 50 
56 45 87 92 19 27 46 53 11 94 52 54 
83 71 98 7 72 64 27 41 58 31 26 60 
37 18 4 56 4 91 86 79 11 73 14 96 
19 7 13 75 2 21 50 38 57 91 19 3 
22 50 65 97 81 50 30 7 76 86 87 74 
82 18 81 81 60 21 88 59 92 8 66 49 
71 95 72 76 61 26 33 55 25 80 91 72 
Ảnh 
Ma trận điểm ảnh
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 48 GVHD: PGS. TS. Ngô Quốc Tạo 
- 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 vuông 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 toá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 toá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. 
.. .. .. .. .. .. 
1 Byte 
m (Double) 
n (Double) 
Ảnh I 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 49 GVHD: PGS. TS. Ngô Quốc Tạo 
 Giải thuậ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 toá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 = nguyên (n/q)) thì n’=n; 
Trái lại n’ = nguyên (n/q))*q + q; 
 Mã nguồn 
(Mã nguồn cho module chuẩn hóa cài đặt trong Matlab) 
Ảnh gốc 
Phần dƣ không đủ 1 block 
Phần nền bổ xung 
cho đủ 1 block 
Block 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 50 GVHD: PGS. TS. Ngô Quốc Tạo 
% 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 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 51 GVHD: PGS. TS. Ngô Quốc Tạo 
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 ảnh mới 
Chọn phân tích 
kiểu Top-down 
Chọn phân tích 
kiểu FS 
Mô phỏng FS 
Hình 33: Giao diện chính 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 52 GVHD: PGS. TS. Ngô Quốc Tạo 
 Mã nguồ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: 
- Button Top-Down 
- Button Fractal Signature 
III.2.4. Module phân tích Top-down (TD) 
 Thuật toá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 toá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ữ. 
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 
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 
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 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 53 GVHD: PGS. TS. Ngô Quốc Tạo 
 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 thuật Top-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 
 IF độ rộng côt(i) > k then 
Thuật toá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 toá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ữ. 
~k 
~k 
~k 
~y 
Thành phần độ rộng ≈k xuất hiện nhiều nhất => k là chiều cao của font chữ 
Ảnh vào Lƣợc đồ chiếu đứng 
Cột 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 54 GVHD: PGS. TS. Ngô Quốc Tạo 
 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 
End 
 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(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_tstart_t) 
 if limit_t>chieucao 
 limit_t=chieucao; % tranh vuot qua vung bien anh 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 55 GVHD: PGS. TS. Ngô Quốc Tạo 
 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 thuật Fractal Signature 
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 toá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 trên của block(i): 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 56 GVHD: PGS. TS. Ngô Quốc Tạo 
 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 
 Mã nguồ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)); 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 57 GVHD: PGS. TS. Ngô Quốc Tạo 
 %%%%%%%%%%%%%%%% 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)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: 
 Mã nguồn: 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 58 GVHD: PGS. TS. Ngô Quốc Tạo 
III.2.7. Module mô phỏng thuật toán FS 
 Module mô phỏng thuật toán FS chỉ mang tính nghiên cứu quá 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 thuật: 
Input: Ảnh đa cấp xám I, kích thƣớc block m x n 
Output: Demo 
Thuật toá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): 
 Tính giá trị lớp dƣới của block(i) 
%%%%%%% mat na loc 
loc=[0 1 0;1 2 1;0 1 0]; 
loc=1/8*loc; 
%%%%%%% dung ham loc 
anh=conv2(anh,loc); 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 59 GVHD: PGS. TS. Ngô Quốc Tạo 
 (với x,y thuộc Block(i)) 
 B4.3: Vẽ các Blanket trong không gian 3D 
End for 
 Mã nguồ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); 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 60 GVHD: PGS. TS. Ngô Quốc Tạo 
 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); 
 %axes(handles.surf); 
 trucx=[1:N]; 
 trucy=[1:N]; 
 meshgrid(trucx,trucy); 
 surf(trucx,trucy,double(anh((i-1)*N+1:(i-1)*N+N,(j-1)*N+1:(j-1)*N+N))); 
 pause(0.3) 
 end 
end 
III.2.8. Các hàm chức năng chính của image processing tool trong matlab sử dụng 
trong chƣơng trình 
 Image Processing Toolbox là một thƣ viện các hàm chức năng về xử lý ảnh tƣơng 
thích trong môi trƣờng MatLab. Các hàm 
trong thƣ viên có thể phân loại theo chức 
năng nhƣ sau: 
- Các phép toán hình thái 
- Các phép toán trên các khối hay các 
vùng liên thông 
- Thiết kế và lọc tuyến tính 
- Chuyển đổi kiểu và không gian ảnh 
- Nâng cao chất lƣợng ảnh 
- Các phép toán trên ảnh nhị phân 
- … 
Một số hàm chức năng sử dụng trong 
chƣơng trình[3] 
a) Hàm đọc và ghi ảnh 
 Hàm đọc: Đọc một ảnh với đƣờng dẫn 
chỉ ra, kết quả trả về là một ma trận điểm 
ảnh. 
Cú pháp: 
 imread(filename,fmt); 
Trong dó: 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 61 GVHD: PGS. TS. Ngô Quốc Tạo 
 Filename: là xâu chỉ ra đƣờng dẫn và tên file ảnh cần đọc 
 Fmt: Định dạng của ảnh đƣợc đọc 
Các giá trị của “fmt” theo bảng sau: 
 Hàm ghi ảnh: Ghi ảnh ra một file 
Cú pháp: 
 imwrite(A,filename,fmt) 
Ghi một ảnh trong biến mảng A với tên file là “filename” theo định dạng “fmt” 
Trong đó: 
- A: Vùng nhớ lƣu trữ ảnh 
- Filename: Tên file cần ghi 
- Fmt: Định dạng file ảnh đầu ra 
 Hàm hiển thị ảnh 
Cú pháp: 
 imshow(I); %hiển thị ảnh I 
Trong đó: 
 I: Vùng nhớ chứa ảnh cần hiển thị 
 Hàm nhân chập: (để thực hiện lọc thông thấp làm trơn nhiễu) 
Cú pháp: 
 C = conv2(A,B) 
Nhân chập mặt nạ B với ma trận A kết quả là ma trận C 
Trong đó: 
 A: Ma trận nguồn 
 B: Mặt nạ chập 
 C: Ma trận kết quả 
 Hàm chuyển ảnh từ RGB sang ảnh đa cấp xám 
Cú pháp: 
I = rgb2gray(RGB) 
Chuyển đổi ảnh “RGB” từ hệ mầu Red-Green-Blue sang ảnh đa cấp xám 
Trong đó: 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 62 GVHD: PGS. TS. Ngô Quốc Tạo 
- RGB: là ảnh nguồn 
- I: ảnh kết quả 
 Hàm vẽ mặt trong không gian 3D 
Cú pháp: 
 surf(X,Y,Z); %vẽ mặt một bề mặt trong không gian X,Y,Z 
Trong đó: 
- X: mảng một chiều chƣa các điểm của trục x 
- Y: mảng một chiều chứa các điểm của trục y 
- Z: mảng 2 chiều chƣa các giá trị của trục Z trong mặt phẳng XY. 
III.3. Kết luận và đánh giá kết quả 
- Chƣơng trình demo đã đƣợc xây dựng để làm việc với ảnh đa cấp xám 
- Thuật toán Top-Down đƣợc cài trong chƣơng trình làm việc rất hiệu quả với các 
loại tài liệu có cấu trúc đơn giản, tốc độ thực hiện ổn định (Hình 34, 35, 36). 
- Đúng nhƣ nhƣợc điểm của Top-down đã nói ở chƣơng 2, top-down kém hiệu quả 
với các loại tài liệu có cấu trúc phức tạp hay bị nghiêng (Hình 37, 38, 39, 40). 
- Thuật toán Fractal Signature đặc biệt hiệu quả với những tài liệu có cấu trúc phức 
tạp, không phân biệt hƣớng tài liệu, với các tài liệu bị nghiêng FS vẫn có thể 
khoanh vùng chính xác vùng Text và đồ họa (Hình 41, 42, 43, 44) 
- Nhƣợc điểm của FS trong chƣơng trình này chƣa giải quyết đƣợc là tốc độ làm 
việc chậm và thuật toán khoanh vùng làm việc hiệu quả chƣa cao. 
- Một số yếu tố ảnh hƣởng đến hiệu quả của FS đó là việc chọn kích thƣớc của 
Block, chọn Block phải hợp lý tốt nhất nhất là ba đủ 1 ký tự thì kết quả phân tích 
sẽ cao. Tuy nhiên với các loại trang có nhiều loại size chữ thì điều này là khó khả 
thi. 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 63 GVHD: PGS. TS. Ngô Quốc Tạo 
Hình 34: Kết quả phân tích của top-down trên tài liệu có cấu trúc đơn giản 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 64 GVHD: PGS. TS. Ngô Quốc Tạo 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 65 GVHD: PGS. TS. Ngô Quốc Tạo 
Hình 35: Kết quả phân tích của top-down trên tài liệu có cấu trúc bảng 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 66 GVHD: PGS. TS. Ngô Quốc Tạo 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 67 GVHD: PGS. TS. Ngô Quốc Tạo 
Hình 36: : Kết quả phân tích của top-down trên tài liệu thuần văn bản 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 68 GVHD: PGS. TS. Ngô Quốc Tạo 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 69 GVHD: PGS. TS. Ngô Quốc Tạo 
Hình 37: : Kết quả phân tích của top-down trên tài liệu có cấu trúc phức tạp (trang tạp trí) 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 70 GVHD: PGS. TS. Ngô Quốc Tạo 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 71 GVHD: PGS. TS. Ngô Quốc Tạo 
Hình 38 : Kết quả phân tích của top-down trên một tờ quảng cáo 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 72 GVHD: PGS. TS. Ngô Quốc Tạo 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 73 GVHD: PGS. TS. Ngô Quốc Tạo 
Hình 39: Kết quả phân tích của top-down trên tài liệu có cấu trúc phức tạp 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 74 GVHD: PGS. TS. Ngô Quốc Tạo 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 75 GVHD: PGS. TS. Ngô Quốc Tạo 
Hình 40: Kết quả phân tích của top-down trên tài liệu bị nghiêng
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 76 GVHD: PGS. TS. Ngô Quốc Tạo 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 77 GVHD: PGS. TS. Ngô Quốc Tạo 
Hình 41: Kết quả phân tích của FS trên tài liệu bị nghiêng 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 78 GVHD: PGS. TS. Ngô Quốc Tạo 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 79 GVHD: PGS. TS. Ngô Quốc Tạo 
Hình 42: Kết quả phân tích của FS trên tài có cấu trúc phức tạp 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 80 GVHD: PGS. TS. Ngô Quốc Tạo 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 81 GVHD: PGS. TS. Ngô Quốc Tạo 
Hình 43: Kết quả phân tích của FS trên một trang quảng cáo 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 82 GVHD: PGS. TS. Ngô Quốc Tạo 
Hình 44: Kết quả phân tích của FS trên tài liệu đơn giản
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 83 GVHD: PGS. TS. Ngô Quốc Tạo 
Kết luận 
Qua nhiều mẫu ảnh phân tích cho thấy thuật toán FS lầm việc rất hiệu quả về 
nhiệm vụ phát hiện vùng văn bản hay vùng đồ họa, tỉ lệ gần nhƣ tƣơng ứng với phần 
mềm ABBYY FineReader 9.0, và hơn hẳn OminiPage, VNDocr. 
Đặc biệt là chƣơng trình đã đƣợc cài đặt để làm việc thành công với ảnh đầu vào 
là ảnh đa cấp xám và có độ phức tạp cao. 
 Thuật toán FS là một thuật toán hay vì không phụ thuộc vào font chữ, tuy 
nhiên trong giới hạn đề này chƣa trình bày và cài đặt hoàn thiện đƣợc. 
Chƣơng trình thử nghiệm phân tích định dạng của trang ảnh tài liệu trên còn rất 
thô sơ, chủ yếu là dùng để mô tả cho phần lý thuyết phân tích định dạng trang ảnh tài 
liệu. Chƣơng trình chỉ phân tích từng trang ảnh tài liệu và phải điều chỉnh bằng tay 
nhƣng kết quả thật khả quan. 
Để đƣa chƣơng trình áp dụng thực tế trên còn phải qua một đoạn đƣờng dài nữa, 
tuy nhiên với kết quả này của công đoạn đầu tiên trong quá trình “lưu trữ thông tin trên 
tài liệu giấy theo cách máy tính có thể hiểu và xử lý được” thì các công đoạn nhận dạng 
chữ sau này sẽ dễ dàng hơn rất nhiều. 
Hƣớng phát triển đề tài: 
- Cải tiến thuật toán FS chạy nhanh hơn. 
- Cài đặt FS trên ảnh mầu. 
- Phát triển tiếp module nhận dạng ký tự. 
- Tích hợp thành phần mềm hoàn chỉnh. 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 84 GVHD: PGS. TS. Ngô Quốc Tạo 
TÀI LIỆU THAM KHẢO 
 Tiếng việt 
[2]. Lƣơng Mạnh Bá, Ngô Thanh Thủy(1999). Nhập môn xử lý ảnh số : Nhà xuất bản 
khoa học kỹ thuật, Hà Nội. Chƣơng 4, Tr. 83-87. 
[8]. PGS. TS. Ngô Quốc Tạo (2008). Xử lý và nhận dạng ảnh : Bài giảng cao học, Viện 
Công nghệ Thông tin. Hà Nội. 
Tiếng Anh 
[6].Anoop M. Namboodiri and Anil K. Jain, Document Structure and Layout Analysis, 
Michigan State University, East Lansing, MI-48824, USA, pp. 31-34, 38-41. 
[7].Jiming Lui, Yuan Y Tang, Ching Y Suen (1997), Chinese document layout 
analysic based on adaptive Split-and-Merge and qualitation spatial reasoning, Elsevier 
Science, Oxford, ROYAUME-UNI, pp. 4-9. 
[3].MathWorks (1997), Image Processing Toolbox User’s Guide. MathWorks, 1997. 
[5]. Sadhana (2002), Document image analysis: A primer, India, pp. 3-7. 
[4].TANG, Yuan Y (2000), Documnet analysis and recogniton by computers. Handbook 
of Pattern recognition and computer vision, World Scientific Company, pp. 1-15. 
[1].Yuan Y. Tang, Hong Mat, Xiaogang Maot, Dan Liu and Ching Y. Suen (1997), A 
New Approach to Document Analysis Based on Modified Fractal Signature, Washington, 
DC, USA : IEEE Computer Society. 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 85 GVHD: PGS. TS. Ngô Quốc Tạo 
Phục Lục 
A. Mã nguồn đầy đủ của chƣơng trình 
A.1. Danh mục các chƣơng trình con trong chƣơng trình 
TT Tên chƣơng trình Nhiệm vụ Tên file lƣu trữ 
1 main 
Chƣơng trình chính chứa giao diện 
của chƣơng trình. 
Main.m 
2 Topdown 
Module chính của thuật toán top-
down. 
Topdown.m 
3 Phantich 
Module con đƣợc gọi từ module 
topdown, thực hiện phân chia trang 
tài liệu thành các block theo lƣợc 
đồ xám chiếu nghiêng, và khoanh 
vùng tài liệu. 
Phantich.m 
4 Phantichtrong 
Module con đƣợc gọi từ module 
phantich, nếu block chứa cảc đồ 
họa và text thì sẽ đƣợc module này 
phần tích tiếp. 
Phantichtrong.m 
5 FSign 
Module chƣơng trình cho thuật toán 
Fractal thực hiện phát hiện text và 
đồ họa (chƣa khoanh vùng). 
FSign.m 
6 FSignKV 
Module chƣơng trình cho thuật toán 
Fractal thực hiện phát hiện và 
khoanh vùng text và đồ họa. 
FSignKV.m 
7 Lienthong 
Module tìm vùng liên thông để 
khoanh vùng. 
Lienthong.m 
8 Vebien 
Module khoanh vùng một vùng liên 
thông. 
Vebien.m 
9 Demo 
Module chay theo thuật toán 
Fractal có vẽ demo các block đƣợc 
tính FS. 
demoFS.m 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 86 GVHD: PGS. TS. Ngô Quốc Tạo 
A.2. Sơ khối liên kết giữa các thủ tục trong chƣơng trình 
A.3. Mã nguồn các module 
1) Main: 
y=imread(filename); 
anhgoc=y; 
%%%%%%%%%%%%% Cac bien phu trong chuong trinh 
% bien de tranh pha tich trung lap 
global letraicu; 
global lephaicu; 
global startcu; 
global limitcu; 
%%%%%%%%%%%%%%%%%%% 
% loc nhieu anh goc 
y=double(y)/255; % chuyen sang kieu double 
%%%%%%% mat na loc 
k=[0 1 0;1 2 1;0 1 0]; 
k=1/8*k; 
%%%%%%% dung ham loc 
y=conv2(y,k); 
y=uint8(round(y*255)); 
%%%%%%%%%%%%%%%% 
kich_thuoc_anh=size(y); 
chieucao=kich_thuoc_anh(1); 
chieurong=kich_thuoc_anh(2); 
%%%%%%%%%Phan nguong va tim hinh chieu doc 
gray_min=min(min(y)); 
gray_max=max(max(y)); 
Main 
(chương trình chính) 
Topdown 
FSign 
FSignKV 
DemoFS 
Phantich 
Phantichtrong 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 87 GVHD: PGS. TS. Ngô Quốc Tạo 
nguongtach=round(((gray_min+gray_max)/2)); 
z=zeros(1,chieucao);% z la hinh chieu doc 
for i=1:chieucao 
 for j=1:chieurong 
 if (y(i,j)>nguongtach) % vung nen 
 y(i,j)=255; % xoa trang vung nen 
 else 
 z(i)=z(i)+1; % tinh cho bieu do xam 
 end 
 end 
end 
%%%%%%%%%%%%%%% 
chieu_cao_hang=timhang(z); 
%%%%%%%%%%%%%%%%% tach khoi bang cach vao tung khoi van ban ngang tim hinh 
%%%%%%%%%%%%%%%%% chieu ngang 
i=1; 
start=i; 
limit=i; 
luocdo=zeros(1,chieurong); 
while (i<=chieucao) 
 while (i(2*min(z))) %di het vung van ban de tinh chieu cao 
 i=i+1; 
 end 
 limit=i-1; %limit-start la chieu cao vung van ban ngang 
 luocdo=zeros(1,chieurong); 
 % tinh luoc do xam cho moi vung ngang 
 if (startstart) 
 if limit>chieucao 
 limit=chieucao; % tranh vuot qua vung bien anh 
 end 
 if (limit-start)>=(0.5*chieu_cao_hang) 
 y=phantich(start,limit,y,nguongtach,chieu_cao_hang,1,size(y,2)); 
 end 
 end 
 while (i<=chieucao)&(z(i)<=(2*min(z))) 
 i=i+1; 
 end 
 start=i; 
end 
imshow(y); 
2) Topdown: 
y=imread(filename); 
anhgoc=y; 
%%%%%%%%%%%%% Cac bien phu trong chuong trinh 
% bien de tranh pha tich trung lap 
global letraicu; 
global lephaicu; 
global startcu; 
global limitcu; 
%%%%%%%%%%%%%%%%%%% 
% loc nhieu anh goc 
y=double(y)/255; % chuyen sang kieu double 
%%%%%%% mat na loc 
k=[0 1 0;1 2 1;0 1 0]; 
k=1/8*k; 
%%%%%%% dung ham loc 
y=conv2(y,k); 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 88 GVHD: PGS. TS. Ngô Quốc Tạo 
y=uint8(round(y*255)); 
%%%%%%%%%%%%%%%% 
kich_thuoc_anh=size(y); 
chieucao=kich_thuoc_anh(1); 
chieurong=kich_thuoc_anh(2); 
%%%%%%%%%Phan nguong va tim hinh chieu doc 
gray_min=min(min(y)); 
gray_max=max(max(y)); 
nguongtach=round(((gray_min+gray_max)/2)); 
z=zeros(1,chieucao);% z la hinh chieu doc 
for i=1:chieucao 
 for j=1:chieurong 
 if (y(i,j)>nguongtach) % vung nen 
 y(i,j)=255; % xoa trang vung nen 
 else 
 z(i)=z(i)+1; % tinh cho bieu do xam 
 end 
 end 
end 
%%%%%%%%%%%%%%% 
chieu_cao_hang=timhang(z); 
%%%%%%%%%%%%%%%%% tach khoi bang cach vao tung khoi van ban ngang tim hinh 
%%%%%%%%%%%%%%%%% chieu ngang 
i=1; 
start=i; 
limit=i; 
luocdo=zeros(1,chieurong); 
while (i<=chieucao) 
 while (i(2*min(z))) %di het vung van ban de tinh chieu cao 
 i=i+1; 
 end 
 limit=i-1; %limit-start la chieu cao vung van ban ngang 
 luocdo=zeros(1,chieurong); 
 % tinh luoc do xam cho moi vung ngang 
 if (startstart) 
 if limit>chieucao 
 limit=chieucao; % tranh vuot qua vung bien anh 
 end 
 if (limit-start)>=(0.5*chieu_cao_hang) 
 y=phantich(start,limit,y,nguongtach,chieu_cao_hang,1,size(y,2)); 
 end 
 end 
 while (i<=chieucao)&(z(i)<=(2*min(z))) 
 i=i+1; 
 end 
 start=i; 
end 
% Lam noi vung van ban 
%%%%%%%%%%%%%%%%%%% 
%subplot(1,2,1); 
%title('ANH GOC'); 
%imshow(anhgoc,'InitialMagnification',100); 
%subplot(1,2,2); 
%title('KET QUA'); 
imshow(y); 
3) Phantich: 
function ketqua=phantich(start,limit,anh,nguongtach,chieu_cao_hang,bientrai,bienphai) 
%%%%%%%%%%%%%%% 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 89 GVHD: PGS. TS. Ngô Quốc Tạo 
global letraicu; 
global lephaicu; 
global startcu; 
global limitcu; 
%%%%%%%%%%%%%%%% 
CDmang=bienphai-bientrai+1; 
luocdo=zeros(1,CDmang); 
for k=start:limit % tim hinh chieu ngang 
 for q=bientrai:bienphai 
 if (anh(k,q)<=nguongtach) 
 luocdo(q-bientrai+1)=luocdo(q-bientrai+1)+1; 
 end 
 end 
end 
%%%%%%%%%%%%% tim cuc tieu trong luoc do xam nhung bo qua suon dau va cuoi 
dau=1; 
cuoi=CDmang; 
while (luocdo(dau+1)>=luocdo(dau))&(dau<CDmang) 
 dau=dau+1; 
end 
while (luocdo(cuoi-1)>=luocdo(cuoi))&(cuoi>2) 
 cuoi=cuoi-1; 
end 
%%%%%%%%%%%% 
if cuoi>dau 
 cuctieu=round(min(luocdo(dau:cuoi))*1.2); 
else 
 cuctieu=bienphai-bientrai; 
end 
%%%%%%%%%%%% 
if (cuctieu>0)&((limit-start)>= 2*chieu_cao_hang)% vung anh 
 for hang_anh=start:limit 
 for cot_anh=bientrai:bienphai 
 anh(hang_anh,cot_anh)=255-anh(hang_anh,cot_anh); 
 end 
 end 
else 
 dorong=0; 
 truoc=luocdo(1); 
 letrai=bientrai; 
 lephai=bientrai; 
 i=bientrai; 
 dautien=0; 
 while(i<=bienphai) 
 while (i<=bienphai)&(luocdo(i-bientrai+1)<=cuctieu) % tim diem bat dau vung van ban 
 i=i+1; 
 dorong=dorong+1; 
 end 
 % if (letrai==bientrai) % doan trang dau qua ngan```````````````````` 
 % letrai=i;dautien=1; 
 % end 
 if (dorong>=(1.2*chieu_cao_hang))|((lephai>letrai)&(i>=bienphai)) % khoang canh cho phep 
 if (lephai>letrai) % tien hanh ve vung van ban 
 % dautien=0; 
 if ((limit-start)< 2*chieu_cao_hang) 
 % khung vung van ban 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 90 GVHD: PGS. TS. Ngô Quốc Tạo 
 if lephai>bienphai 
 lephai=bienphai; 
 end 
 for ve_bien_ngang=letrai:lephai 
 anh(start,ve_bien_ngang)=0; 
 anh(limit,ve_bien_ngang)=0; 
 end 
 for ve_bien_doc=start:limit 
 anh(ve_bien_doc,letrai)=0; 
 anh(ve_bien_doc,lephai)=0; 
 end 
 else 
 if (letraicu==letrai) & (lephaicu==lephai)&(startcu==start)&(limitcu==limit) % tranh bi treo 
 % trung khoi phan tich 
 letraicu 
 lephaicu 
 startcu 
 limitcu 
 else 
 letraicu=letrai; 
 lephaicu=lephai; 
 startcu=start; 
 limitcu=limit; 
 anh=phantichtrong(start,limit,letrai,lephai,anh,nguongtach,chieu_cao_hang); 
 end 
 end 
 end 
 letrai=i;% bat dau mot vung van ban 
 dorong=0; 
 else 
 dorong=0; 
 end 
 while (icuctieu) 
 i=i+1; % di qua vung van ban 
 lephai=i; 
 end 
 end 
end 
ketqua=anh; 
4) Phantichtrong: 
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 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 91 GVHD: PGS. TS. Ngô Quốc Tạo 
i=start; 
start_t=i; 
limit_t=i; 
while (i<=chieucao) 
 while (i(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_tstart_t) 
 if limit_t>chieucao 
 limit_t=chieucao; % tranh vuot qua vung bien anh 
 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; 
5) Fsign 
%anh=imread('C:\chuongtrinh\anhmau\textc3.jpg'); % doc anh tu mot file JPG 
anh=imread(filename); % doc anh tu mot file JPG 
N=15; % kich thuoc moi block 
k=1; % so block tren anh co kich thuoc NxN 
chieucao=size(anh,1); % chieu cao cuar anh vao 
chieucao_goc=chieucao; 
chieurong=size(anh,2); % chieu rong cua anh vao 
chieurong_goc=chieurong; 
%%%%%%%%%%%%%%%%%%% 
%%%%%%%%%%%%%%%% 
%%%%%%%%%Phan nguong va tim hinh chieu doc 
gray_min=min(min(anh)); 
gray_max=max(max(anh)); 
nguongtach=round(((gray_min+gray_max)/2)); 
% 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 
%anh=zeros(1:chieucao,1:chieurong); 
%%%%%%%%%%%%%%%%%%%% 
%loc nhieu anh goc 
%anh = filter2(fspecial('average',3),anh); 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 92 GVHD: PGS. TS. Ngô Quốc Tạo 
anh=double(anh)/255; % chuyen sang kieu double 
%%%%%%% mat na loc 
loc=[0 1 0;1 2 1;0 1 0]; 
loc=1/8*loc; 
%%%%%%% dung ham loc 
anh=conv2(anh,loc); 
anh=uint8(round(anh*255)); 
%%%%%%%%%%%%%% 
for i=1:chieucao 
 for j=1:chieurong 
 if (i>chieucao_goc)|(j>chieurong_goc) % ngoai vung bien anh goc 
 anh(i,j)=0; % dat la vung nen anh 
 else % trong vung bien anh goc 
 %anh(i,j)=255-anh(i,j); 
 if (anh(i,j)>nguongtach) % vung nen 
 %anh(i,j)=255; % xoa trang vung nen 
 anh(i,j)=0; 
 else 
 %z(i)=z(i)+1; % tinh cho bieu do xam 
 anh(i,j)=255-anh(i,j); 
 end 
 end 
 end 
end 
%%%%%%%%%%%%%%% tinh FS cho moi block 
FS=[]; 
k=0; 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
u_layer1=zeros(N+2);b_layer1=zeros(N+2);u_layer2=zeros(N+2);b_layer2=zeros(N+2);block_k=zeros(N
+2); 
%%%%%%%%%%%%%%%%%%%%%% 
for i=2:round(chieucao/N) 
 for(j=2: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); 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 93 GVHD: PGS. TS. Ngô Quốc Tạo 
 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; 
%nguong=((min(FS)+max(FS))/2); 
%nguong=3000; 
anh=255-anh; 
anh=cat(3,anh,anh,anh); 
nguong=min(FS)+50; 
for i=2:round(chieucao/N) 
 for(j=2:round(chieurong/N)) 
 k=k+1; 
 if (FS(k)>4000) % anh 
 anh((i-1)*N+1:i*N,(j-1)*N+1:j*N,2:3)=20; 
 elseif (FS(k)>nguong) % text 
 anh((i-1)*N+1:i*N,(j-1)*N+1:j*N,1)=150; 
 anh((i-1)*N+1:i*N,(j-1)*N+1:j*N,3)=150; 
 end 
 end 
end 
imshow(anh) 
6) FSignKV 
global anh 
anh=imread(filename); % doc anh tu mot file JPG 
N=15; % kich thuoc moi block 
k=1; % so block tren anh co kich thuoc NxN 
chieucao=size(anh,1); % chieu cao cuar anh vao 
chieucao_goc=chieucao; 
chieurong=size(anh,2); % chieu rong cua anh vao 
chieurong_goc=chieurong; 
%%%%%%%%%%%%%%%%%%% 
%%%%%%%%%%%%%%%% 
%%%%%%%%%Phan nguong va tim hinh chieu doc 
gray_min=min(min(anh)); 
gray_max=max(max(anh)); 
nguongtach=round(((gray_min+gray_max)/2)); 
% 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) 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 94 GVHD: PGS. TS. Ngô Quốc Tạo 
 chieurong=round(chieurong/N)*N+N; 
else 
 chieurong=round(chieurong/N)*N; 
end 
%%%%%%%%%%%%%%%%%%%% 
%loc nhieu anh goc 
%anh = filter2(fspecial('average',3),anh); 
anh=double(anh)/255; % chuyen sang kieu double 
%%%%%%% mat na loc 
loc=[0 1 0;1 2 1;0 1 0]; 
loc=1/8*loc; 
%%%%%%% dung ham loc 
anh=conv2(anh,loc); 
anh=uint8(round(anh*255)); 
%%%%%%%%%%%%%% 
for i=1:chieucao 
 for j=1:chieurong 
 if (i>chieucao_goc)|(j>chieurong_goc) % ngoai vung bien anh goc 
 anh(i,j)=0; % dat la vung nen anh 
 else % trong vung bien anh goc 
 %anh(i,j)=255-anh(i,j); 
 if (anh(i,j)>nguongtach) % vung nen 
 %anh(i,j)=255; % xoa trang vung nen 
 anh(i,j)=0; 
 else 
 %z(i)=z(i)+1; % tinh cho bieu do xam 
 anh(i,j)=255-anh(i,j); 
 end 
 end 
 end 
end 
%%%%%%%%%%%%%%% tinh FS cho moi block 
FS=[]; 
k=0; 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
u_layer1=zeros(N+2);b_layer1=zeros(N+2);u_layer2=zeros(N+2);b_layer2=zeros(N+2);block_k=zeros(N
+2); 
%%%%%%%%%%%%%%%%%%%%%% 
% mang chua FS 
global AFS 
AFS=zeros(round(chieucao/N)-1,round(chieurong/N)-1); 
%%%%%%%%%%%%%%%%%%%%%% 
for i=2:round(chieucao/N) 
 for(j=2: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; 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 95 GVHD: PGS. TS. Ngô Quốc Tạo 
 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; 
 % AFS 
 %AFS(i,j)=(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-1) 
 for(j=1:round(chieurong/N)-1) 
 k=k+1; 
 if ((FS(k)>nguong)&(FS(k)<4000)) % text 
 AFS(i,j)=1; % danh dau vung text 
 elseif (FS(k)>=4000) % vung anh 
 AFS(i,j)=2; % danh dau vung anh 
 end 
 end 
end 
%%%%%%%%% khoanh vung 
global MLT 
MLT=AFS; 
MLT=0; % chua 1 khoi cac phan tu lien thong 
%%%%%%%%%%% 
set(0,'RecursionLimit',1000) 
%%%%%%%%%%%% 
anh=255-anh; 
for i=1:round(chieucao/N-1) 
 for(j=1:round(chieurong/N)-1) 
 if ((AFS(i,j)~=3)&(AFS(i,j)==1)); % phan tu la text chua xet trong anh 
 MLT=0; 
 lienthong(i,j,1); 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 96 GVHD: PGS. TS. Ngô Quốc Tạo 
 if(sum(sum(MLT))>20 ) % bo qua vung lien thong qua nho 
 vebien(MLT,N,1); 
 end 
 elseif ((AFS(i,j)~=3)&(AFS(i,j)==2)); % phan tu la text chua xet trong anh 
 MLT=0; 
 lienthong(i,j,2); 
 if(sum(sum(MLT))>20 ) % bo qua vung lien thong qua nho 
 vebien(MLT,N,2); 
 end 
 end 
 end 
end 
imshow(anh) 
7) DemFS: 
anh=imread(filename); % doc anh tu mot file JPG 
goc=anh; 
N=15; % kich thuoc moi block 
k=1; % so block tren anh co kich thuoc NxN 
chieucao=size(anh,1); % chieu cao cuar anh vao 
chieucao_goc=chieucao; 
chieurong=size(anh,2); % chieu rong cua anh vao 
chieurong_goc=chieurong; 
%%%%%%%%%%%%%%%%%%% 
%%%%%%%%%%%%%%%% 
%%%%%%%%%Phan nguong va tim hinh chieu doc 
gray_min=min(min(anh)); 
gray_max=max(max(anh)); 
nguongtach=round(((gray_min+gray_max)/2)); 
% 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 
%%%%%%%%%%%%%%%%%%%% 
%loc nhieu anh goc 
anh=double(anh)/255; % chuyen sang kieu double 
%%%%%%% mat na loc 
loc=[0 1 0;1 2 1;0 1 0]; 
loc=1/8*loc; 
%%%%%%% dung ham loc 
anh=conv2(anh,loc); 
anh=uint8(round(anh*255)); 
%%%%%%%%%%%%%% 
for i=1:chieucao 
 for j=1:chieurong 
 if (i>chieucao_goc)|(j>chieurong_goc) % ngoai vung bien anh goc 
 anh(i,j)=0; % dat la vung nen anh 
 else % trong vung bien anh goc 
 %anh(i,j)=255-anh(i,j); 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 97 GVHD: PGS. TS. Ngô Quốc Tạo 
 if (anh(i,j)>nguongtach) % vung nen 
 %anh(i,j)=255; % xoa trang vung nen 
 anh(i,j)=0; 
 else 
 %z(i)=z(i)+1; % tinh cho bieu do xam 
 anh(i,j)=255-anh(i,j); 
 end 
 end 
 end 
end 
%%%%%%%%%%%%%%% tinh FS cho moi block 
FS=[]; 
k=0; 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
u_layer1=zeros(N+2);b_layer1=zeros(N+2);u_layer2=zeros(N+2);b_layer2=zeros(N+2);block_k=zeros(N
+2); 
%%%%%%%%%%%%%%%%%%%%%% 
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 
 trucx=[1:N+2]; 
 trucy=[1:N+2]; 
 meshgrid(trucx,trucy); 
 % axes(handles.anhgoc); 
 subplot(2,2,1); 
 anhtem=goc; 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 98 GVHD: PGS. TS. Ngô Quốc Tạo 
 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); 
 % surf(trucx,trucy,b_layer2) 
 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); 
 %axes(handles.surf); 
 trucx=[1:N]; 
 trucy=[1:N]; 
 meshgrid(trucx,trucy); 
 surf(trucx,trucy,double(anh((i-1)*N+1:(i-1)*N+N,(j-1)*N+1:(j-1)*N+N))); 
 pause(0.3) 
 % tinh FS 
 k=k+1; 
 FS(k)=(vol2-vol1)/2; 
 end 
end 
8) Lienthong 
function lienthong(i,j,loai) % loai=1 la text, =2 la anh 
global AFS; 
global MLT; 
AFS(i,j)=3; % danh dau la da xet 
MLT(i,j)=1; % danh dau diem thuoc vung lien thong 
if (((i-1)>0)&((j-1)>0)& (AFS(i-1,j-1)~=3)&(AFS(i-1,j-1)==loai)) lienthong(i-1,j-1,loai);end 
if (((j-1)>0)& (AFS(i,j-1)~=3)&(AFS(i,j-1)==loai)) lienthong(i,j-1,loai);end 
if (((i+1)0)&(AFS(i+1,j-1)~=3)&(AFS(i+1,j-1)==loai))lienthong(i+1,j-1,loai);end 
if (((i-1)>0)& (AFS(i-1,j)~=3)&(AFS(i-1,j)==loai)) lienthong(i-1,j,loai);end 
if (((i+1)<size(AFS,1))& (AFS(i+1,j)~=3)&(AFS(i+1,j)==loai)) lienthong(i+1,j,loai);end 
if (((i-1)>0)&((j+1)<size(AFS,2))& (AFS(i-1,j+1)~=3)&(AFS(i-1,j+1)==loai)) lienthong(i-1,j+1,loai);end 
if (((j+1)<size(AFS,2))& (AFS(i,j+1)~=3)&(AFS(i,j+1)==loai)) lienthong(i,j+1,loai);end 
if (((i+1)<size(AFS,1))&((j+1)<size(AFS,2))& (AFS(i+1,j+1)~=3)&(AFS(i+1,j+1)==loai)) 
lienthong(i+1,j+1,loai);end 
9) Vebien 
function vebien(MLT,N,loai) 
global anh; 
m=size(MLT,1); % chieu cao 
n=size(MLT,2); % chieu rong 
MLTF=zeros(m+4,n+4); 
MLTF(3:m+2,3:n+2)=MLT; % de da bao kong bi vuot bien 
%MLTF 
for i=3:m+1 % tim diem den dau tien 
 for j=3:n+1 
 if (MLTF(i,j)==1)break 
 end 
 end 
 if (MLTF(i,j)==1)break 
 end 
end 
%%%%%%%%%%%%%%% 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 99 GVHD: PGS. TS. Ngô Quốc Tạo 
% quy dinh huong 
% 1: len 
% 2: phai 
% 3: xuong 
% 4: trai 
%%%%%%%%%%%%%%% thuat toan do bien 
huong=2; 
gocx=i; 
gocy=j; 
hanhcu=i; 
cotcu=j; 
j=j+1; 
while (~((i==gocx)&(j==gocy))) % khong phai diem dau 
 if MLTF(i,j)==0 % diem trang thi lui lai re phai 
 switch huong 
 case 2 % huong phai 
 j=j-1; 
 i=i+1; 
 huong=3; % huong xuong 
 case 3 % huong xuong 
 i=i-1; 
 j=j-1; 
 huong=4; % huong trai 
 case 4 % huong trai 
 j=j+1; 
 i=i-1; 
 huong=1; % huong len 
 case 1; % hung len 
 i=i+1; 
 j=j+1; 
 huong=2; 
 end 
 else % gap diem den thi ve va re trai 
 % ve bien 
 hang1=(i-2)*N+1; 
 hang2=(i-1)*N+1; 
 cot1=(j-2)*N+1; 
 cot2=(j-1)*N+1; 
 if (loai==1) 
 anh(hang1:hang2,cot1:cot2,2:3)=150; 
 else 
 anh(hang1:hang2,cot1:cot2,1)=50; 
 anh(hang1:hang2,cot1:cot2,3)=50; 
 end 
 % thuc hien re trai 
 switch huong 
 case 1 
 j=j-1; % re trai voi huong len 
 huong=4; 
 case 2 
 i=i-1; % re trai voi huong phai 
 huong=1; 
 case 3 
 j=j+1; % re trai voi huong xuong 
 huong=2; 
 case 4 
 i=i+1; % re trai voi huong trai 
 huong=3; 
Luận văn tốt nghiệp cao học Học viên: Nguyễn Văn Huy 
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên  
 100 GVHD: PGS. TS. Ngô Quốc Tạo 
 end 
 end 
end 
            Các file đính kèm theo tài liệu này:
24LV09_CNTT_KHMTNguyenVanHuy.pdf