3.3 LẤY ĐẶC TRƯNG THEO BIỂU ĐỒ HISTOGRAM CỦA KHUNG XƯƠNG, GIẢ KHUNG XƯƠNG, GIẢ KHUNG
Biểu đồ histogram gồm có hai trục là trục hoành và trục tung. Trục hoành (nằm ngang) là thang độ xám đánh số 0 đến 255 biểu thị sắc độ đi từ màu tối đen (giá trị bằng 0), nhạt dần và sáng trắng (giá trị bằng 255). Trục tung (trục đứng) biểu thị số lượng điểm ảnh trên dãy sắc độ. Nhìn vào histogram có thể thấy được sự phân bố lượng pixel trên từng vùng của thang độ xám.
Với histogram sử dụng để lấy đặc trưng chữ Nôm thì khác. Chữ Nôm được chuyển hóa thành ảnh đen trắng với giá trị điểm ảnh đen là điểm nền, điểm ảnh trắng là điểm ảnh chữ, biểu đồ ở đây chỉ xác định số lượng điểm ảnh sử dụng, nghĩa là biểu đồ histogram ứng dụng để lấy đặc trưng cho chữ Nôm thể hiện tần xuất xuất hiện điểm ảnh theo một chiều cụ thể. Hình ảnh một khung xương (hay giả khung) của chữ Nôm được tách ra thành hai ảnh thành phần, ảnh khung xương ngang (chỉ lấy các điểm ảnh chiếu theo chiều ngang của khung xương hay giả khung), và ảnh khung xương dọc (chỉ lấy các điểm ảnh chiếu theo chiều dọc khung xương hay giả khung). Hình 3.12 thể hiện các loại khung xương.
a. Ảnh gốc b. Khung xương ảnh (convert điểm ảnh và
điểm nền)
c. Khung xương ngang d. Khung xương đứng
Hình 3.12. Ví dụ khung xương, khung xương ngang, khung xương dọc chữ Nôm
Sau khi có khung xương ngang và khung xương dọc, ta tiến hành lấy biểu đồ histogram cho chúng. Với khung xương ngang hoặc giả khung ngang ta lấy biểu đồ histogram bằng cách duyệt qua cạnh đứng của ảnh (tương ứng với trục y của histogram), tại mỗi điểm ta lại duyệt qua cạnh ngang (tương ứng với trục x của histogram) để lấy các pixel ảnh có cùng tọa độ cạnh đứng đó. Kết thúc quá trình duyệt này ta sẽ thống kê được số lượng điểm ảnh có cùng tọa độ y của toàn bộ ảnh, mô tả nó theo dạng biểu đồ tần xuất histogram thì ta được histogram của khung xương ngang hoặc của giả khung ngang. Tương tự vậy, với khung xương dọc hoặc giả khung dọc thì ta duyệt trên cạnh ngang, tại mỗi điểm trên cạnh ngang ta duyệt theo cạnh dọc để tìm các điểm ảnh. Kết thúc toàn bộ quá trình duyệt ta có được số lượng điểm ảnh có cùng tọa độ x của toàn bộ ảnh, mô tả theo dạng biểu đồ tần xuất histogram thì ta được histogram của khung xương hoặc của giả khung dọc. Hình 3.13 thể hiện ví dụ lấy histogram cho khung xương ngang. Hình 3.14 thể hiện ví dụ lấy histogram cho khung xương dọc. Hình 3.15 thể hiện ví dụ lấy histogram cho giả khung ngang. Hình 3.16 thể hiện ví dụ lấy histogram cho giả khung dọc.
a. Ảnh gốc b. Khung xương ngang c. Histogram của khung xương ngang
a. Ảnh gốc b. Khung xương dọc c. Histogram của khung xương dọc
Hình 3.14. Ví dụ khung xương dọc và histogram
a. Ảnh gốc b. Giả khung ngang c. Histogram của giả khung ngang
Hình 3.15. Ví dụ giả khung dọc và histogram
a. Ảnh gốc b. Giả Khung ngang c. Histogram của giả khung ngang
Hình 3.16. Ví dụ giả khung ngang và histogram
Trên Histogram ta thấy gồm nhiều cột xếp liền nhau, mỗi cột còn gọi là một ”bin” thể hiện số điểm ảnh tại nét dọc có tọa độ x, hoặc nét ngang có tọa độ y nào đó. Để mã hóa một Histogram ta chia histogram đó ra các đoạn (G1, G2…), ta mô tả như hình 3.17.
Hình 3.17. Mô tả phân đoạn histogram
Trên mỗi đoạn G đó tiến hành thuật toán gán nhãn cho chúng và đánh giá giá trị của các nhãn đã gán để tạo ra chuỗi mã hóa đặc trưng. Ngoài ra có thể bổ sung thêm các thông số khác vào chuổi đặc trưng để tăng độ chính xác nhận dạng, hoặc dùng để phân lớp và giảm khối lượng tính toán, so sánh khi huấn luyện và nhận dạng. Nhóm nghiên cứu Ming GangWen, Kuo Chin Fan và Chin Chuan Han [16], sử dụng các ký tự L, M, S, U để gán nhãn cho các phân đoạn G. Giá trị tương ứng của các ký tự L, M, S, U là 4, 2, 1, 0 được dùng để đánh giá. Ngoài ra nhóm còn đưa thêm một thông số nữa được gọi là điểm ảnh tương đối vào chuỗi mã. Một chữ Nôm sau khi mã hóa đặc trưng bằng phương pháp mã hóa histogram sẽ thu được chuỗi mã gồm 5 thành phần là: điểm ảnh tương đối; chuỗi nhãn của các phân đoạn trong histogram dọc; chuỗi nhãn của các phân đoạn trong histogram ngang; trọng số của chuỗi mã histogram dọc; trọng số của chuỗi mã histogram ngang.
Bảng 3.1 và 3.2 ví dụ về mã hóa chữ Nôm theo phương pháp mã hóa histogram của giả khung, khung xương.
Bảng 3.1. Ví dụ về mã hóa chữ Nôm
theo phương pháp mã hóa histogram của giả khung Ảnh chữ Giả khung Giả khung ngang Histogra m giả khung ngang Giả khung dọc Histogra m giả khung dọc Mã ngan g Mã dọc Trọn g số ngan g Trọn g số dọc Điểm ảnh tương đối LMS U LLM U 7 10 5.41463 4
Bảng3.2. Ví dụ về mã hóa chữ Nôm
theo phương pháp mã hóa histogram của khung xương Ảnh chữ Giả khung Giả khung ngang Histogram giả khung ngang Giả khung dọc Histogram giả khung dọc Mã ngang Mã dọc Trọng số ngang Trọng số dọc Điểm ảnh tương đối LMS ML 7 6 4.682926 Tổng kết chương 3
Trong chương 3 chúng tôi trình bày một số kỹ thuật lấy đặc trưng cho nhận dạng chữ tượng hình, những kỹ thuật này bước đầu được nhóm chúng tôi thực nghiệm với chữ Nôm và có kết quả khả quan. Chúng tôi nhận thấy mỗi phương pháp lấy đặc trưng phù hợp với từng phương pháp nhận dạng khác nhau, do đó việc so sánh các phương pháp nhận dạng chỉ mang tính tương đối. Do điều kiện thời gian nên nhóm chưa tiến hành thực nghiệm ghép từng phương pháp nhận dạng khác nhau với từng phương pháp trích chọn đặc trưng khác nhau để so sanh, bước đầu nhóm mới chỉ thực hiện thực nghiệm sử dụng phương pháp trích chọn đặc trưng theo nét với phương pháp nhận dạng cực đại entropy kết quả đạt khoảng 65%, thực nghiệm lấy đặc trưng theo biểu đồ histogram của khung xương và giả khung với phương pháp nhận dạng cực đại entropy đạt khoảng 60%, thực nghiệm lấy đặc trưng theo biểu đồ histogram của khung xương và giả khung với phương pháp nhận string edit-distance kết quả đạt 82%, thực nghiệm lấy đặc trưng theo điểm ảnh với phương pháp nhận dạng bằng mạng nơ-ron truyền ngược kết quả đạt 81%, thực nghiệm lấy đặc trưng theo lưới điểm ảnh với phương pháp nhận dạng bằng máy vector hỗ trợ SVM kết quả đạt 92%
Một số kỹ thuật trong chương này sẽ được chúng tôi đưa vào xây dựng một phương pháp nhận dạng mới trình bày ở chương 4.
Chương 4
NHẬN DẠNG CHỮ NÔM THEO KHOẢNG CÁCH SOẠN THẢO DỰA TRÊN KHUNG XƯƠNG VÀ GIẢ KHUNG
4.1 Ý TƯỞNG VÀ QUY TRÌNH NGHIÊN CỨU, THỰC NGHIỆM
Qua nghiên cứu các phương pháp nhận dạng và các phương pháp lấy đặc trưng của chữ tượng hình, chúng tôi mong muốn áp dụng các phương pháp đó xây dựng nên một chương trình nhận dạng chữ Nôm với mục đích đưa ra một phương pháp mới, có độ chính xác nhận dạng cao, có khả năng ứng dụng vào thực tiễn. Quy trình nghiên cứu, ứng dụng của chúng tôi bắt đầu từ giai đoạn tiền xử lý nhằm thu được mẫu tốt nhất, ở định dạng phù hợp. Tiếp theo chúng tôi nghiên cứu phương pháp lấy khung xương và giả khung thông qua các phép toán logic và qua mạng nơ-ron. Tiếp theo cúng tôi nghiên cứu ứng dụng phương pháp lấy đặc trưng từ histogram của khung xương và giả khung. Khi nhận dạng chúng tôi sử dụng phương pháp nhận dạng theo khoảng cách soạn thảo (string edit distance), sở dĩ chúng tôi lựa chọ phương pháp này bởi qua đánh giá ban đầu, chúng tôi thấy phù hợp với đặc trưng thu được dưới dạng chuỗi theo phương pháp mã hóa histogram của khung xương và giả khung.
4.2 TIỀN XỬ LÝ 4.2.1 Nhị phân hóa ảnh 4.2.1 Nhị phân hóa ảnh
Ảnh Bitmap là định dạng ảnh do Microsoft đề xuất, có phần mở rộng là BMP dùng để lưu trữ trên máy tính hoặc những thiết bị điện tử khác. Dữ liệu ảnh bitmap là một ma trận điểm ảnh, mỗi điểm ảnh được biểu diễn bởi một số bit. Mỗi một điểm ảnh, số bit biểu diễn màu của nó được gọi là độ sâu màu sắc (color depth) và có thể là 1, 4, 8, 16, 24 hoặc 32 bit cho mỗi điểm ảnh. Với ảnh 24 bit, mỗi thành phần màu được biểu
diễn bởi một byte (8 bit), với ảnh 16 bit màu, mỗi điểm ảnh được biểu diễn bởi 4 bit, với ảnh 1 bit mỗi điểm ảnh được biểu diễn bởi 1 bit.
Các thuộc tính tiêu biểu của một tập tin ảnh BMP là:
Số bit trên mỗi điểm ảnh (bit per pixel), thường được ký hiệu bởi n. Một ảnh BMP n-bit có màu. Giá trị n càng lớn thì ảnh càng có nhiều màu, và càng rõ nét hơn. Giá trị tiêu biểu của n là 1 (ảnh đen trắng), 4 (ảnh 16 màu), 8 (ảnh 256 màu), 16 (ảnh 65536 màu) và 24 (ảnh 16 triệu màu);
Chiều cao của ảnh (height); Chiều rộng của ảnh (width).
Ảnh bitmap được chia thành ba dạng là ảnh đen trắng, ảnh đa mức xám và ảnh màu. Ảnh đen trắng là ảnh mà mỗi điểm ảnh chỉ thể hiện một trong hai trạng thái 0 và 1 để biểu diễn trạng thái điểm ảnh đen hay trắng. Ảnh đa mức xám là ảnh mà mỗi điểm ảnh được biểu diễn bởi một giá trị cường độ sáng của điểm ảnh. Ảnh màu là ảnh mà mỗi điểm ảnh được đại diện bởi ba giá trị màu RGB, ứng với mỗi đại lượng R, G, B ta sẽ được một giá trị màu tương ứng. Số lượng màu mà máy tính có thể biểu diễn lên tới hàng triệu màu. Nhưng số màu thực sự của một ảnh nào đó có thể là khá nhỏ. Để tiết kiệm bộ nhớ, với các ảnh có số lượng màu nhỏ hơn 256 thì màu của các điểm ảnh được lưu trữ dưới dạng bảng màu (palette). Với các ảnh có số màu lớn hơn 256 thì màu của điểm ảnh không tổ chức dưới dạng bảng màu, khi đó giá trị của các điểm ảnh chính là giá trị của các thành phần màu R, G, B.
Ảnh màu được lưu trữ khá phức tạp, do đó để nhận dạng chữ nói chung và nhận dạng chữ Nôm nói riêng từ ảnh màu sẽ rất phức phức tạp, tốn nhiều công và thời gian xử lý. Trong nhận dạng chữ nói chung và nhận dạng chữ Nôm nói riêng, người ta chỉ quan tâm để phân biệt trong ảnh đâu là điểm ảnh nền và đâu là điểm ảnh chữ, để phân biệt như vậy người ta chỉ cần sử dụng ảnh đen – trắng là đủ. Do vậy để thuận tiện cho việc nhận dạng người ta thường chuyển đổi ảnh màu sang ảnh đen trắng dạng 1 bit.
4.2.2 Kỹ thuật tách ký tự
Trong xử lý nhận dạng chữ, từ ảnh đầu vào, người ta phải tách các ảnh con chứa các chữ ra, công đoạn này còn gọi là boxer ảnh. Trong văn
tự chữ Nôm, các chữ được viết thẳng hàng, thẳng cột nên việc boxer ảnh khá thuận tiện. Phương pháp boxer ảnh thường dựa vào kỹ thuật dò biên. Trên một ảnh văn tự chữ Nôm, người ta dò ra biên trái, biên phải, biên trên, biên dưới của một hàng (hoặc một cột). Sau khi dò biên ta lấy ra được một hàng (hoặc một cột) của văn tự, trên hàng (hoặc cột) đó người ta lại tiếp tục sử dụng kỹ thuật dò biên để lấy ra các chữ độc lập. Kết quả boxer có thể là các ảnh chữ Nôm, có thể là một mảng chứa tọa độ của từng chữ Nôm trong ảnh văn tự.
Vấn đề xác định điểm ảnh và điểm nền rất quan trọng trong phương pháp dò biên. Do ảnh đầu vào là ảnh đen trắng 1-bit nên việc xác định điểm ảnh nền và điểm ảnh chữ rất đơn giản. Điểm ảnh nền là điểm ảnh màu trắng, điểm ảnh chữ là điểm ảnh màu đen. Điểm ảnh là màu trắng nếu cả ba thành phần màu cơ bản R,G,B của điểm ảnh đó đều bằng không. Qua đó để xác định điểm ảnh và điểm nền ta xử dụng thuật toán kiểm tra điểm ảnh như sau:
Nếu thành phần R của điểm ảnh bằng 0 và thành phần G của và thành phần B của điểm ảnh bằng không thì điểm ảnh đó là điểm ảnh nền, còn ngược lại điểm ảnh đó là điểm ảnh chữ. Hiện thực thuật toán bằng C# như sau;
/// <summary>
/// Kiểm tra một điểm màu có là màu nền hay không
/// </summary>
/// <param name="cPixel">Pixel cần kiểm tra</param>
/// <returns>Kết quả trả về</returns>
private bool IsBackColor(Color cPixel) {
if ((cPixel.R == 0) && (cPixel.G == 0) && (cPixel.B == 0)) {
return true; }
return false; }
4.3 KỸ THUẬT LẤY KHUNG XƯƠNG ẢNH BẰNG MẠNG NƠ-RON XUNG KÉP XUNG KÉP
Ý tưởng xuất phát từ hiện tượng đồng cỏ cháy, giả sử có một đồng cỏ cháy, các đám cháy bắt đầu từ bên ngoài, lan dần vào giữa đồng cỏ rồi
gặp nhau tại một điểm. Nếu tốc độ lan của các đám cháy bằng nhau thì điểm gặp nhau chính là điểm giữa của đồng cỏ. Nếu mô phỏng hiện tượng đồng cỏ cháy trên một vùng ảnh của chữ Nôm thì ví trí gặp nhau của các đám cháy gặp nhau chính là điểm ảnh giữa của vùng ảnh.
a. Đám cháy bắt đầu từ rìa vùng điểm ảnh
b. Đám cháy lan dần đều vào giữa vùng ảnh
c. Các đám cháy gặp nhau tại điểm giữa ảnh
Hình 4.2. Mô tả quá trình cháy trên một vùng ảnh
Nếu mô phỏng hiện tượng đồng cỏ cháy trên toàn bộ ảnh của một chữ Nôm thì ta sẽ thu được một tập hợp các điểm mà các đám cháy gặp nhau. Tập hợp các điểm này chính là khung xương của ảnh chữ Nôm
a. Ảnh gốc b. Khung xương ảnh
Hình 4.3. Mô tả khung xương chữ Nôm
Vấn đề đặt ra là làm sao mô tả được hiện tượng đồng cỏ cháy trên ảnh chữ Nôm. Để mô tả hiện tượng này ta có thể sử dụng giải thuật của nhóm tác giả Lifeng shang, Zhang Yi và Luping Ji giới thiệu năm 2007 [15]. Giải thuật của nhóm tác giả này đưa ra là sử dụng mạng nơ-ron xung kép để tạo ra các cặp xung dưới dạng sóng Autowaves[15] để mô tả hiện tượng đồng cỏ cháy trên một ảnh nhị phân. Mạng nơ-ron này có số phần tử đúng bằng số điểm ảnh của ảnh đầu vào. Các phần tử của mạng Nơ-ron nhận một trong hai giá trị 1 và 0 với 1 là nơ-ron đã cháy và 0 là nơ-ron chưa cháy.
Để kích hoạt một nơ-ron nhóm tác giả đưa ra cách tính ngưỡng của một nơ-ron dựa trên giá trị liên kết của nơ-ron đó với các nơ-ron láng giềng của nó.
Để mô tả hoạt động của mạng nơ-ron nhóm tác giả đề xuất sử dụng các ma trận sau:
- Ma trận đầu vào (ma trận F) có số phần tử bằng số điểm ảnh vào với giá trị điểm ảnh được chuyển thành 2, giá trị điểm nền được chuyển thành 1;
- Ma trận ngưỡng (T_H), chứa ngưỡng hiện tại của các nơ-ron. Ban đầu các phần tử của nó được gán giá trị 1,5. khi mạng nơ-ron hoạt động nó được tính theo công thức;
T_H[i, j] = T_H[i, j] + (T_Bh - T_Ah) * Y[i, j]; với T_Bh=15, T_Ah=1,5 (4.1)
- Ma trận trạng thái cháy hiện tại (ma trận Y) mô tả trạng thái cháy của các nơ-ron ở bước hiện tại. Khi bắt đầy, các phần tử của Y được gán bằng 0, khi mạng nơ-ron hoạt động nó được tính theo công thức ;
- Ma trận trạng thái cháy trước đó (ma trận Ypre), mô tả trạng thái cháy của các nơ-ron ở bước trước. Khi bắt đầu, các phần tử của Ypre được gán bằng 0, khi mạng nơ-ron hoạt động nó được gán lại bằng giá trị tương ứng của Y;
- Ma trận L chứa giá trị liên kết của các neu-ron, ban đầu các phần tử của ma trận này có giá trị 1,5, khi mạng nơ-ron hoạt động nó được tính theo công thức;
Li,j= (Yi-1,j+ Yi,j-1 +Yi,j+1 +Yi+1,j)K với K=
- U là ma trận chứa các phần tử đóng vai trò kích hoạt nội bộ đối với các nơ-ron;
- Tr là ma trận nhị phân lưu lại kết quả làm mỏng (thinning) ảnh;