TỔNG QUAN VỀ XỬ LÝ ẢNH
Tổng quan về một hệ thống xử lý ảnh
Xử lý ảnh là một lĩnh vực quan trọng trong thị giác máy, bao gồm quá trình chuyển đổi ảnh ban đầu thành ảnh mới với các đặc tính theo yêu cầu của người dùng Quá trình này có thể bao gồm phân tích, phân lớp đối tượng, nâng cao chất lượng hình ảnh, phân đoạn, tách cạnh và gán nhãn cho các vùng cụ thể, cũng như biên dịch thông tin hình ảnh từ ảnh.
Xử lý ảnh số là một lĩnh vực quan trọng trong tin học ứng dụng, liên quan đến việc biến đổi, truyền tải và mã hoá các ảnh tự nhiên Khác với xử lý dữ liệu bằng đồ hoạ, tập trung vào các ảnh nhân tạo được tạo ra bởi chương trình, xử lý ảnh số sử dụng các phương pháp và kỹ thuật để cải thiện chất lượng và hiệu quả của hình ảnh Mục đích chính của xử lý ảnh là tối ưu hoá và nâng cao giá trị thông tin từ các hình ảnh tự nhiên.
Biến đổi ảnh, làm tăng chất lượng ảnh
Tự động nhận dạng, đoán nhận, đánh giá các nội dung của ảnh
Các bước cần thiết trong xử lý ảnh:
Hình 1.1.1 Các giai đoạn chính trong xử lý ảnh
Quá trình thu nhận ảnh bắt đầu từ việc sử dụng camera, nơi ảnh có thể được thu nhận dưới dạng tín hiệu tương tự (như camera ống kiểu CCIR) hoặc tín hiệu số hóa (như CCD - Charge Coupled Device) Ngoài ra, ảnh cũng có thể được thu nhận từ vệ tinh thông qua các bộ cảm ứng hoặc từ việc quét ảnh tranh.
Quá trình số hóa bắt đầu bằng việc lưu trữ tín hiệu trên scanner, sau đó chuyển đổi tín hiệu tương tự thành tín hiệu rời rạc thông qua việc lấy mẫu và lượng hóa Tiếp theo, ảnh cần được tăng cường để cải thiện chất lượng, do ảnh có thể bị suy biến do thiết bị, nguồn sáng hoặc nhiễu Mục tiêu là khôi phục ảnh gần nhất với trạng thái gốc Cuối cùng, các đặc tính của ảnh sẽ được phát hiện, bao gồm biên, phân vùng và trích chọn đặc tính.
Cuối cùng tùy theo mục đích của ứng dụng, sẽ là giai đoạn nhận dạng, phân lớp hay các quyết định khác.
Một số vấn đề trong xử lý ảnh
1.2.1 Các khái niệm cơ bản
Phần tử ảnh, hay còn gọi là Pixel, là đơn vị cơ bản trong ảnh số Ảnh thực tế là một hình ảnh liên tục về không gian và giá trị độ sáng, nhưng để máy tính có thể xử lý, cần phải thực hiện quá trình số hóa Quá trình này bao gồm việc chuyển đổi tín hiệu liên tục thành tín hiệu rời rạc thông qua lấy mẫu và lượng hóa, giúp phân biệt các điểm kề nhau mà mắt thường không nhận thấy Do đó, một bức ảnh được cấu thành từ một tập hợp các pixel.
Mức xám (Gray level) là giá trị số tương ứng với cường độ sáng của mỗi điểm ảnh, thường được mã hóa với 16, 32, 64 hoặc phổ biến nhất là 256 mức, tương ứng với 8 bit cho mỗi pixel Độ phân giải (Resolution) của ảnh thể hiện mật độ điểm ảnh trên ảnh số, trong khi ảnh số là tập hợp các điểm ảnh với mức xám để mô tả gần đúng ảnh thật Ảnh nhị phân chỉ có hai mức xám 0 và 1, trong khi ảnh màu là sự tổng hợp cường độ điểm ảnh từ nhiều màu sắc khác nhau Ảnh đa mức xám là ảnh có nhiều hơn hai mức xám.
Trong biểu diễn ảnh, pixel là các phần tử đặc trưng quan trọng Một hàm hai biến có thể chứa thông tin về hình ảnh Các mô hình biểu diễn giúp mô tả logic và định lượng các tính chất của hàm này Đặc biệt, cần chú ý đến tính trung thực và các tiêu chuẩn trong quá trình biểu diễn ảnh.
“thông minh” để đo chất lượng ảnh hoặc tính hiệu quả của các kĩ thuật xử lý
Trong lĩnh vực biểu diễn ảnh, hai mô hình phổ biến thường được sử dụng là mô hình bài toán và mô hình thống kê Mô hình bài toán sử dụng các hàm hai biến trực giao, gọi là các hàm cơ sở, để biểu diễn ảnh hai chiều Ngược lại, mô hình thống kê coi ảnh như một phần tử của một tập hợp, được đặc trưng bởi các đại lượng như kỳ vọng toán học, hiệp biến, phương sai và moment.
1.2.3 Biến đổi ảnh (Image Transform)
Thuật ngữ biến đổi ảnh thường dùng để nói tới một lớp các ma trận đơn vị và các kĩ thuật dùng để biến đổi ảnh
Biến đổi ảnh giúp giảm thiểu các yếu tố không cần thiết, từ đó nâng cao hiệu quả xử lý Quá trình này làm nổi bật thông tin quan trọng mà người dùng quan tâm, tuy nhiên, điều này đồng nghĩa với việc người dùng sẽ phải chấp nhận mất một số thông tin cần thiết.
Phân tích ảnh liên quan đến việc xác định các độ đo định lượng của 1 ảnh để đưa ra một mô tả đầy đủ về ảnh
Quá trình phân tích ảnh bao gồm nhiều bước quan trọng, bắt đầu bằng việc tăng cường chất lượng ảnh Tiếp theo, các đặc tính của ảnh được phát hiện, bao gồm việc nhận diện biên, phân vùng ảnh và trích xuất các đặc tính cần thiết.
1.2.4.1 Tăng cường ảnh – khôi phục ảnh
Tăng cường ảnh là một bước quan trọng, tạo tiền đề cho xử lý ảnh Nó gồm các kỹ thuật như: lọc độ tương phản, khử nhiễu, nổi màu…
Khôi phục ảnh là nhằm loại bỏ các suy giảm trong ảnh
Biên là yếu tố quan trọng trong phân tích ảnh, vì các điểm trích chọn phụ thuộc vào biên Mỗi điểm ảnh có thể được coi là biên khi có sự thay đổi đột ngột về mức xám Tập hợp các điểm biên sẽ hình thành nên biên hoặc đường bao quanh của ảnh.
Phân vùng là một bước quan trọng trong xử lý ảnh, giúp phân tích ảnh thành các thành phần dựa trên các đặc tính như biên hoặc các vùng liên thông Các tiêu chí để xác định các vùng liên thông có thể bao gồm mức xám, màu sắc tương đồng hoặc độ tương phản.
Nhận dạng ảnh là quá trình mô tả các đối tượng mà người dùng muốn xác định Quá trình này thường diễn ra sau khi đã trích xuất các đặc tính chính của đối tượng Có hai loại mô tả đối tượng trong nhận dạng ảnh.
Mô tả tham số (nhận dạng theo tham số)
Mô tả theo cấu trúc (nhận dạng theo cấu trúc)
Kỹ thuật nhận dạng đã được áp dụng thành công cho nhiều đối tượng khác nhau, bao gồm nhận dạng ảnh vân tay và nhận dạng chữ viết.
Dữ liệu ảnh, giống như các loại dữ liệu khác, cần được lưu trữ và truyền tải qua mạng, nhưng lượng thông tin cần thiết để biểu diễn một bức ảnh là rất lớn Vì vậy, việc giảm thiểu lượng thông tin hoặc nén dữ liệu trở thành một nhu cầu thiết yếu.
Nén dữ liệu là quá trình loại bỏ thông tin thừa trong dữ liệu gốc, dẫn đến việc kích thước dữ liệu sau khi nén thường nhỏ hơn nhiều so với kích thước ban đầu.
MỘT SỐ KỸ THUẬT TIỀN XỬ LÝ ẢNH
Kỹ thuật nâng cấp ảnh
Nâng cao chất lượng ảnh là bước quan trọng trong xử lý ảnh, nhằm làm nổi bật các đặc tính như tăng cường độ tương phản, lọc nhiễu, làm nổi biên và làm mịn biên ảnh.
Các thuật toán triển khai việc nâng cao chất lượng ảnh hầu hết dựa trên các kỹ thuật trên miền điểm, không gian và tần số
Xử lý điểm ảnh là quá trình thay đổi giá trị của một điểm ảnh dựa trên chính giá trị của nó, không phụ thuộc vào các điểm ảnh xung quanh.
Có hai cách tiếp cận với phương pháp biến đổi ảnh: đầu tiên là sử dụng hàm biến đổi để chuyển đổi giá trị mức xám của điểm ảnh sang giá trị mức xám khác, và thứ hai là áp dụng lược đồ mức xám (Gray Histogram) Về mặt toán học, toán tử điểm là ánh xạ từ giá trị cường độ ánh sáng u(m,n) tại tọa độ (m,n) sang giá trị cường độ ánh sáng khác v(m,n) thông qua hàm f(.), tức là v(m,n) = f(u(m,n)) Ứng dụng chính của toán tử điểm là để biến đổi độ tương phản của ảnh, với nhiều dạng toán tử điểm được giới thiệu.
2.1.1.1 Kỹ thuật biến đổi âm bản
Với O(m,n): Giá trị điểm ảnh đầu ra tại vị trí (m,n)
I(m,n): Giá trị điểm ảnh đầu vào tại vị trí (m,n)
2.1.1.2 Kỹ thuật thay đổi độ xám
Nếu C dương : Tăng độ sáng
Nếu C âm: Giảm độ sáng
2.1.1.3 Thay đổi độ tương phản
Độ tương phản là khái niệm quan trọng trong ảnh số, thể hiện sự khác biệt về độ sáng giữa các điểm ảnh Mỗi điểm ảnh có giá trị độ sáng khác nhau, nhưng cảm nhận của mắt người về độ sáng không phải lúc nào cũng chính xác Hai đối tượng có cùng độ sáng nhưng trên nền khác nhau sẽ tạo ra cảm nhận khác biệt Do đó, độ tương phản không chỉ là sự thay đổi độ sáng của đối tượng so với nền mà còn là độ nổi bật của điểm ảnh hoặc vùng ảnh Nếu ảnh có độ tương phản kém, chúng ta có thể điều chỉnh để cải thiện chất lượng hình ảnh.
Ta có công thức thay đổi độ tương phản như sau:
2.1.2 Toán tử không gian Đây là toán tử khi tác động vào điểm ảnh thì nó quan tâm tới các điểm lân cận Toán tử được thực hiện thông qua một phép nhân chập và mẫu
Giả sử ta có ảnh I(x,y), một mẫu T(k,l), khi đó ảnh I nhân chập với mẫu T được định nghĩa như sau:
Một số kỹ thuật lọc nhiễu
2.2.1 Kỹ thuật lọc trung bình
Với lọc trung bình, mỗi điểm ảnh được thay thế bằng trung bình trọng số của các điểm lân cận
Thuật toán lọc trung bình hoạt động bằng cách sử dụng một cửa sổ lọc 3x3 quét qua từng điểm ảnh của ảnh đầu vào Tại mỗi vị trí điểm ảnh, giá trị của các điểm ảnh trong vùng 3x3 của ảnh gốc được đưa vào ma trận lọc Giá trị của điểm ảnh trong ảnh đầu ra được tính bằng giá trị trung bình của tất cả các điểm ảnh trong cửa sổ lọc Quá trình này bao gồm hai bước đơn giản: tính tổng các thành phần trong cửa sổ lọc và chia tổng này cho số lượng phần tử của cửa sổ.
Thuật toán: Ảnh đầu vào là I(x,y), T là ma trận mẫu
I ( x , y ) trong đó M là tổng giá trị trọng số của T
So sánh với ngưỡng θ để tính lại I(x,y) như sau :
Thuật toán lọc trung bình được minh họa bởi hình vẽ sau:
Hình 2.2.1 Mô tả thuật toán lọc trung bình
2 3 2 1 và ma trận mẫu như sau:
1 thực hiện lọc trung bình với ngưỡng θ= 2
Sau khi thực hiện lọc trung bình ảnh kết quả là I2224
2.2.2 Kỹ thuật lọc trung vị
Trung vị được viết bởi công thức: v(m,n) = Trungvi(y(m - k,n-l)) với (k,l) Є W
Hoặc: cho một dãy x 1 , x 2 , x n được sắp xếp theo một trật tự khi đó x tv : điểm trung vị được tính như sau:
Kỹ thuật này yêu cầu sắp xếp các điểm ảnh trong cửa sổ theo thứ tự tăng dần hoặc giảm dần so với giá trị trung vị Kích thước cửa sổ thường được chọn là số lẻ, với các kích thước phổ biến như 3x3, 5x5 và 7x7.
Thuật toán lọc trung vị:
B 1 : với mỗi điểm ảnh I(x,y) ta lấy cửa sổ W x W
B 2 : sắp xếp các giá trị điểm ảnh trong vòng cửa sổ theo một trật tự
B 3 : tính I tv theo công thức ở trên
I (x,y) = I (x,y) nếu ( x , y ) tv hoặc I (x,y) = I tv nếu ( x , y ) tv Lọc trung vị là phi tuyến vì:
Hữu ích cho việc loại bỏ các điểm ảnh hay các hàng mà vẫn bảo toàn độ phân giải
Hiệu quả giảm đi khi số điểm nhiễu trong cửa sổ lớn hơn hay bằng một nửa số điểm trong cửa sổ
Lọc thông thấp thường được sử dụng để làm trơn nhiễu Trong kỹ thuật này người ta thường dùng một số nhân chập sau :
Khi b=1, Hb trở thành nhân chập H1, tương đương với việc áp dụng lọc trung bình Để hiểu rõ hơn về bản chất khử nhiễu cộng của các bộ lọc này, ta có thể diễn đạt lại phương trình thu nhận ảnh một cách rõ ràng hơn.
Trong đó η[m,n] là nhiễu cộng có phương sai n 2 Như vậy theo cách tính của lọc trung bình ta có:
Như vậy nhiễu trong ảnh giảm đi N w lần
Lọc thông cao được định nghĩa: hHP(m,n) = δ(m,n) – hLP(m,n) với hLP(m,n) là lọc thông thấp Bộ lọc thông cao có thể được cài đặt như sau : u(m,n) v(m,n)
Hình 2.2.2 Mô hình lọc thông cao
Bộ lọc thông cao được sử dụng để trích chọn biên và làm mịn ảnh, vì biên là những điểm có sự biến thiên nhanh về giá trị mức xám Từ góc độ tần số tín hiệu, các điểm biên tương ứng với các thành phần tần số cao Do đó, bộ lọc thông cao giúp loại bỏ các thành phần tần số thấp, chỉ giữ lại các thành phần tần số cao, thường được áp dụng để làm mịn biên trước khi thực hiện các thao tác tiếp theo.
Lọc thông thấp + tác với biên ảnh
Một số mặt nạ dùng trong lọc thông cao
Các nhân chập thông cao có đặc tính chung là tổng các hệ số của bộ lọc bằng 1.
Kỹ thuật phân ngưỡng
2.3.1 Kỹ thuật phân ngƣỡng tự động
Kỹ thuật này được xây dựng trên nguyên lý vật lý, cụ thể là dựa vào entropy và các nguyên tắc thống kê Nó áp dụng toán học cùng với việc xác định các điểm cực trị địa phương để thực hiện quá trình tách biệt hiệu quả.
- giả sử có ảnh I(MxN)
- G là số mức xám của ảnh (trên lý thuyết)
- Gọi t(g) là số điểm ảnh có mức xám ≤ g momen quán tính trung bình có mức xám nhỏ hơn hoặc bằng các mức xám g
Hàm được tính như sau: f(g) = [ ( ) ( 1 )] 2
Tìm ra một giá trị θ nào đó sao cho f đạt max khi đó θ là ngưỡng cần tìm (f(θ) max => θ là ngưỡng)
2.3.2 Phương pháp sử dụng các điểm biên Điểm biên là điểm mà ở đó có sự thay đổi đột ngột về giá trị mức xám Nó là điểm nằm ở biên giới của các đối tượng ảnh hay giữa các đối tượng ảnh và nền Do mức xám của các điểm biên sẽ thể hiện được các vùng tốt hơn nên biểu đồ mức xám của các điểm biên sẽ cho kết quả chính xác hơn so với biểu đồ mức xám tổng thể
Ngưỡng được xác định dựa trên toán tử dò biên vô hướng Laplace, bắt đầu bằng việc tính toán Laplace của ảnh đầu vào Phương pháp đơn giản nhất để thực hiện điều này là sử dụng phép nhân chập với mặt nạ thích hợp.
Chúng ta có một biểu đồ mức xám của ảnh gốc, chỉ tập trung vào các điểm ảnh có giá trị Laplace cao Những điểm ảnh thuộc nhóm 85% trở lên sẽ được hiển thị trong biểu đồ này, trong khi các điểm khác sẽ không xuất hiện Ngưỡng sử dụng sẽ được xác định từ biểu đồ mức xám đã phân tích.
Một số kĩ thuật phát hiện biên
Phương pháp gradient là kỹ thuật dò biên cục bộ dựa vào cực đại của đạo hàm Gradient được định nghĩa là một vector thể hiện tốc độ thay đổi giá trị của điểm ảnh theo hai hướng x và y Các thành phần của gradient được tính toán thông qua các đạo hàm riêng, cho phép xác định sự thay đổi của giá trị điểm ảnh trong không gian hai chiều.
Với dx là khoảng cách giữa các điểm theo hướng x dy là khoảng cách giữa các điểm theo hướng y
Trên thực tế thường hay dùng dx=dy=1
Đối với ảnh liên tục f(x,y), các đạo hàm riêng giúp xác định vị trí cực đại cục bộ theo hướng biên Gradient của ảnh này được biểu diễn bởi hàm f(x,y) dọc theo r với góc θ, được định nghĩa qua các đạo hàm dr và df.
Hướng cực đại của hàm f được xác định khi đạo hàm theo θ đạt cực đại, tức là khi (df/dθ)(df/dr)=0 hay –f x sinθ + f y cosθ =0 Từ đó, ta có thể tính toán hướng cực đại bằng công thức θ r = tan -1 (f y /f x ).
2 max fx 2 fy dr df
Phương pháp xác định biên gradient hoạt động hiệu quả khi độ sáng thay đổi rõ rệt Tuy nhiên, khi mức xám thay đổi chậm hoặc có miền chuyển tiếp rộng, phương pháp này trở nên kém hiệu quả Để khắc phục nhược điểm này, người ta thường áp dụng phương pháp Laplace.
Tư tưởng của nó là lấy đạo hàm bậc hai của các điểm Toán tử laplace được định nghĩa như sau:
Suy ra ta có mặt nạ sau:
Ngoài mặt nạ trên ta còn sử dụng các mặt nạ sau:
Trong kỹ thuật lọc laplace, điểm biên được xác định bởi điểm cắt điểm không
Kỹ thuật này không chỉ đơn thuần là điểm mà còn thể hiện đường biên mảnh với độ rộng 1 pixel Tuy nhiên, kỹ thuật Laplace rất nhạy cảm với nhiễu, bởi vì đạo hàm bậc hai thường không ổn định.
Trong opencv kĩ thuật này được viết với hàm : void cvLaplace( const CvArr* src, CvArr* dst, int aperture_size=3 );
Src là ảnh gốc (ảnh nguồn)
Dst là điểm đến hình ảnh
Trong kỹ thuật sobel người ta sử dụng hai mặt nạ sau :
Thuật toán Sobel tương tự như thuật toán gradient, với thành phần x được biểu diễn bởi H x và thành phần y bởi H y Việc phân tích này tương đương với các thành phần của gradient, cho ra kết quả tương ứng.
Kỹ thuật sobel trong opencv được viết bằng hàm: void cvSobel( const CvArr* src, CvArr* dst, int xorder, int yorder, int aperture_size=3 );
Src là ảnh gốc (ảnh đầu vào)
Dst là ảnh đích (ảnh kết quả)
Aperture_size là kích thước ma trận mẫu
Sử dụng hai mặt nạ:
Giả sử ta có ảnh I, khi đó phương pháp gradient sử dụng toán tử Prewitt ta có ảnh kết quả như sau:
Đường thẳng hough 19 1 Biến đổi hough trên đường thẳng 19Nhi■u event thú v■, event ki■m ti■n thi■t th■c 123doc luôn luôn t■o c■ h■i gia t■ng thu nh■p online cho t■t c■ các thành viên c■a website
Phương pháp Hough cho phép xác định một đường thẳng từ một điểm ảnh đã chọn, và đường thẳng này được gọi là đường thẳng Hough Ứng dụng của phương pháp này bao gồm việc phát hiện góc nghiêng của văn bản và nhận diện bảng biểu trong hình ảnh.
2.5.1 Biến đổi hough trên đường thẳng
Phương trình tổng quát của đường thẳng được biểu diễn dưới dạng y = cx + m, trong đó c là hệ số góc Nếu có n điểm thỏa mãn điều kiện y = cxi + m với i từ 1 đến n, thì các điểm (xi, yi) sẽ nằm trên cùng một đường thẳng.
2.5.2 Đường thẳng hough trong tọa độ cực
Ta có phương trình sau: r= xcosφ +ysinφ
Mảng A[x,φ], với mỗi điểm biên x i , y i ta vẽ đường thẳng trong không gian tham số r, φ như sau: r= x i cosφ + y i sinφ
Thay vì putpixel(r, φ) ta tăng giá trị mảng A[r,φ] và tìm ra r 0 , φ 0 sao cho A[r 0 ,φ 0 ] đạt max Khi đó r0, φ0 là giá trị (tham số) để xác định đường thẳng x= r 0 cos φ y= r 0 sinφ
Các phép toán hình thái học
Trong giai đoạn xử lý ảnh, hai kỹ thuật quan trọng thường được áp dụng là Dilation (giãn ảnh) và Erosion (co ảnh) Từ hai phép toán cơ bản này, người ta phát triển thêm các phép toán như đóng và mở, giúp giảm thiểu lỗi trong quá trình nhận dạng hình ảnh.
Phép toán Dilation gọi là D(i): làm dầy
Enosion gọi là E(i): làm gầy
Cả một chu trình D-> E gọi là open và theo chu trình ngược lại là close
Các phép toán này thường ứng dụng trong nhận dạng ký tự và tách các đối tượng với nhau, nối liền nét đứt
2.6.1 Phép toán hình thái với ảnh nhị phân Ảnh nhị phân biểu diễn dạng các giá trị 0 và 1 do đó có thể diễn biến dưới dạng tập hợp
2.6.1.1 Kỹ thuật giãn ảnh Minskowsky
Kỹ thuật này tương đương với việc lấy một điểm có giá trị bằng 1 trong ma trận
T làm gốc di chuyển T trên ảnh I nếu vị trí nào bằng 1 thì ta thay giá trị của nó bằng T
Trong quá trình chuyển ma trận T trên I, chúng ta sử dụng tư tưởng lấy một phần tử bằng 1 làm gốc Tại vị trí nào mà các phần tử trùng hoàn toàn, chúng ta sẽ gán giá trị bằng 1; ngược lại, nếu không trùng, giá trị sẽ được đặt bằng 0.
2.6.2 Phép toán hình thái với ảnh đa mức xám
Với T ’ = Rot180 (T) xoay ngược lại
Trước khi tính toán D(I) cho ảnh đa mức xám, cần thêm các giá trị bằng giá trị nhỏ nhất trong ảnh vào bốn phía xung quanh, với số dòng và số cột phụ thuộc vào kích thước của ma trận mẫu.
NHẬN DẠNG PHIẾU KẾT QUẢ THI TOEIC
Phát biểu bài toán
Để tổ chức thi và chấm thi TOEIC tại trường đại học, phòng đào tạo sẽ lập danh sách sinh viên đủ điều kiện thi và sắp xếp tên theo thứ tự Danh sách này sẽ được chuyển cho cán bộ coi thi, người sẽ sử dụng để giám sát các sinh viên trong phòng thi.
Khi vào phòng thi, thí sinh sẽ nhận phiếu trả lời trắc nghiệm và cần điền thông tin cá nhân bằng bút mực Sau đó, họ sẽ tô mã đề và số báo danh theo quy định Cuối cùng, các sinh viên sẽ nhận bộ đề thi để bắt đầu làm bài.
200 câu Mỗi câu có nhiều lựa chọn các sinh viên lựa chọn rồi tô theo hướng dẫn của phiếu thi
Hình 3.1.1 Mẫu phiếu thi TOEIC
Sau khi hoàn thành bài thi, cán bộ coi thi sẽ thu lại đề và phiếu trả lời để nộp cho phòng đào tạo nhằm tiến hành chấm điểm Phương pháp chấm điểm phổ biến là cán bộ chấm sẽ dựa vào đáp án có sẵn của từng bộ đề để đánh giá bài thi của sinh viên, từ đó tính tổng điểm cho toàn bộ bài Khi quá trình chấm thi kết thúc, cán bộ chấm sẽ nộp lại bài thi cho phòng đào tạo để cập nhật điểm.
Cách thức thi TOEIC và quy trình chấm điểm hiện tại gặp nhiều vấn đề về thời gian và độ chính xác Trong các đợt thi với số lượng bài thi lớn, việc xảy ra nhầm lẫn là điều khó tránh khỏi.
Công nghệ thông tin đang phát triển mạnh mẽ, cho phép áp dụng vào quy trình chấm thi TOEIC một cách nhanh chóng và hiệu quả hơn so với phương pháp thủ công Việc này không chỉ nâng cao độ chính xác mà còn giảm bớt công sức cho giáo viên Dựa trên nền tảng đó, nghiên cứu về hệ thống chấm thi TOEIC tự động được triển khai, nhằm tối ưu hóa quy trình và tự động hóa việc vào điểm thi.
Tiền xử lý phiếu kết quả
Phiếu kết quả từ quá trình quét thường gặp tình trạng nghiêng và nhiễu, vì vậy cần thực hiện tiền xử lý trước khi nhận dạng Để đảm bảo kết quả chính xác, chúng ta áp dụng một số kỹ thuật tiền xử lý cần thiết.
Phân ngưỡng là phương pháp định hướng điểm tập trung vào các tính chất của điểm ảnh, như giá trị xám hoặc màu sắc, để xác định xem điểm ảnh đó có thuộc về đối tượng hay không Phương pháp này thường được sử dụng để tìm một hoặc nhiều ngưỡng tối ưu, biến ảnh đa cấp xám thành ảnh nhị phân chỉ có hai màu đen và trắng, giúp phân đoạn hình ảnh hiệu quả.
Quá trình nhị phân hóa ảnh chuyển đổi ảnh đa cấp xám thành ảnh nhị phân, trong đó θ được xác định là ngưỡng Các điểm ảnh có giá trị lớn hơn hoặc bằng ngưỡng θ được coi là đối tượng, trong khi các điểm ảnh có giá trị nhỏ hơn ngưỡng θ được xem là điểm nền Công thức tổng quát cho quá trình này được trình bày như sau:
Với I(x,y) là ảnh kết quả
Trong opencv kỹ thuật phân ngưỡng được sử dụng với hàm: cvThreshold(image03, image02, slider_pos, 255, CV_THRESH_BINARY);
Hình 3.2.1 Phiếu kết quả thi TOEIC trước khi phân ngưỡng
Hình 3.2.2 Phiếu kết quả thi TOEIC sau khi phân ngƣỡng
Sau khi tiến hành phân ngưỡng ảnh, nhiễu thường xuất hiện, do đó cần thực hiện lọc nhiễu Trong số nhiều phương pháp lọc nhiễu, kỹ thuật lọc trung vị được ưu tiên sử dụng vì nó giúp bảo toàn độ phân giải của ảnh sau khi lọc.
Trung vị được viết bởi công thức:
Hoặc: cho một dãy x 1 , x 2 , x n được sắp xếp theo một trật tự khi đó x tv : điểm trung vị được tính như sau:
Kỹ thuật này yêu cầu các điểm ảnh trong cửa sổ được sắp xếp theo thứ tự tăng dần hoặc giảm dần dựa trên giá trị trung vị Kích thước cửa sổ thường được chọn là số lẻ, với các kích thước phổ biến như 3x3, 5x5 và 7x7.
Phương pháp tìm biên Canny sử dụng cặp đạo hàm riêng bậc nhất kết hợp với việc làm sạch nhiễu Đạo hàm của một ảnh được lọc được biểu diễn bằng công thức: Gf(x, y) = (fx, fy), trong đó fx và fy là đạo hàm theo x và y của hàm f.
Lấy đạo hàm riêng theo x và y của G ta được:
Hơn nữa bộ lọc Gauss là tách được, do vậy ta có thể thực hiện riêng biệt các tích chập theo x và y:
I y G x G y x f x ( , ) x ( ) ( ) và f y (x,y) G y (x) G(x) I (3.5) Với biên độ và hướng tính theo công thức (3.2) và (3.3) Thuật toán được minh họa theo hình sau: f x fy
Hình 3.2.3 Mô hình tính của phương pháp canny
Kỹ thuật này được viết bởi hàm sau trong opencv: void cvCanny( const CvArr* image, CvArr* edges, double threshold1, double threshold2, int aperture_size=3 );
Trong đó: image là ảnh đầu vào edges là ảnh đầu ra (ảnh kết quả) threshold1 là ngưỡng 1 threshold2 là ngưỡng 2 aperture_size là cỡ của ma trận mẫu
Hình 3.2.4 Phiếu kết quả thi TOEIC sau khi tìm biên 3.2.4 Xác định góc nghiêng và xoay ảnh
Khi sử dụng máy quét, phiếu kết quả có thể bị nghiêng, vì vậy cần điều chỉnh góc nghiêng để nâng cao độ chính xác trong việc nhận dạng Trước khi thực hiện việc xoay ảnh, điều quan trọng là xác định chính xác góc nghiêng của hình ảnh.
Phương pháp nhận dạng đường thẳng Hough dựa trên nguyên tắc rằng với mỗi giá trị của các tham số r và θ, ta có thể tính toán số tọa độ (x,y) thỏa mãn phương trình đường thẳng Hough và là điểm đen Nếu số lượng tọa độ này vượt qua một ngưỡng θ nhất định, thì tập hợp các điểm đó có khả năng tạo thành một đường thẳng.
Thuật toán tìm đường thẳng dựa trên phương trình đường thẳng Hough được mô tả dưới ngôn ngữ giả như sau: for r = 0 to w 2 h 2 do for θ = 0 to 360 ° do
{ count = 0 ; for x = 0 to width do
Tính y; if (x, y) là điểm đen then count = count + 1
} if count > θ then thông báo có một đường thẳng ;
Trong thuật toán này, w và h đại diện cho chiều rộng và chiều cao của ảnh, trong khi biến count được sử dụng để đếm số điểm đen tương ứng với mỗi giá trị của r và θ Khi giá trị count vượt quá một ngưỡng nhất định, điều này cho thấy có một đường thẳng xuất hiện Thuật toán này có ưu điểm nổi bật là khả năng xác định các đường thẳng không liên tục với độ chính xác cao, đồng thời cho phép xác định góc nghiêng của đường thẳng một cách hiệu quả.
Từ đó biết được ảnh có nghiêng không và thực hiện bước tiếp theo là xoay ảnh
Trong opencv thì đường thẳng được xác định bởi hàm: lines = cvHoughLines2( dst2, storage, CV_HOUGH_STANDARD, 1, CV_PI/180, 180, 0, 0 );
Sau khi xác định góc nghiêng của phiếu kết quả, để chỉnh sửa góc nghiêng này, ta cần quay lại ảnh theo góc đã xác định Thuật toán xoay ảnh chuyển đổi một điểm ảnh (x,y) từ vị trí ban đầu sang tọa độ mới (x1, y1) bằng công thức: x1 = x.cosφ + y.sinφ và y1 = y.sinφ – x.cosφ.
Nhận dạng phiếu kết quả thi TOEIC
Trước khi nhận diện phiếu kết quả thi TOEIC, cần xác định dòng và cột để nhận dạng ô Để làm điều này, chúng ta có thể vẽ histogram theo trục ox và oy nhằm nhận diện khung của phiếu kết quả.
Sau khi thực hiện vẽ histogram theo trục ox, oy cho khung trả lời ta thu được hình vẽ như sau:
Hình 3.3.1 Histogram theo ox cho khung trả lời
Hình 3.3.2 Histogram theo oy cho khung trả lời 3.3.2 Nhận dạng khung
Nhận dạng khung là bước quan trọng tiếp theo sau khi vẽ histogram cho phiếu kết quả, giúp khoanh vùng các ô trả lời, số báo danh và mã đề thi.
Nhận dạng khung là quá trình xác định tọa độ góc trên bên trái, độ rộng và độ cao của khung Các khung được nhận dạng theo thứ tự, và nhận thấy rằng các cạnh trên và dưới của chúng nằm trên một đường thẳng Để xác định cạnh trên và dưới của khung, ta sẽ tìm tọa độ (x,y) và sử dụng hàm trong OpenCV để vẽ các cạnh này.
3.3.3 Tách dòng Để thực hiện tách dòng và nhận dạng dòng chúng ta thực hiện theo các bước sau:
Bước 1: Vẽ biểu đồ mức xám theo trục oy của từng khung và lưu vào một mảng
Bước 2: Duyệt mảng vừa lưu histogram để tìm ra các tọa độ theo oy
Bước 3: Tính khoảng cách và xác định các dòng trong từng khung
Nhận xét sau khi vẽ Histogram theo trục oy thì tạo ra các đoạn thẳng cách nhau một khoảng trống bằng nhau
3.3.4 Tách cột Để nhận dạng được ô ta phải nhận dạng được từng dòng và từng cột trong khung Ở bước trên ta đã nhận dạng được dòng trong phần này chung ta tiếp tục nhận dạng từng cột trong khung Để nhận dạng từng cột trong khung ta làm theo các bước sau:
Bước 1: vẽ Histogram theo trục ox cho từng khung
Bước 2: duyệt mảng chứa Histogram theo ox
Bước 2: xác định tọa độ của từng cột (2 tọa độ)
Sau khi thực hiện tách dòng và tách cột tiếp tục chúng ta thực hiên tách ô và nhận dạng ô Ô được chọn là ô có mật độ điểm đen nhiều nhất
Tư tưởng của phương pháp tách ô và nhận dạng ô như sau:
Bước 1: Duyệt mảng chứa tọa độ của cột, và dòng của khung để xác định tọa độ của ô
Bước 2: từ tọa độ cột và dòng vừa duyệt ở trên chúng ta xác định được ô
Bước 3: duyệt tất cả các ô trong một dòng, tìm số điểm đen trong từng ô của dòng
Bước 4: Tiến hành quét các ô trong một dòng cho đến khi gặp ô có điểm đen lớn hơn ngưỡng θ Nếu tìm thấy ô này, nó sẽ được chọn; ngược lại, dòng đó sẽ không có ô nào được chọn.
Bước 5: Nếu số ô nhỏ hơn số ô trong hàng thì quay lại bước 3 để tiếp tục nhận dạng, ngược lại thì kết thúc.
KẾT QUẢ THỰC NGHIỆM
Thực nghiệm tiền xử lý ảnh
Phiếu kết quả sau khi quét để nhận dạng thi có thể gặp phải tình trạng nhiễu và nghiêng Do đó, việc thực hiện tiền xử lý trước khi nhận dạng là vô cùng quan trọng Dưới đây là các kết quả từ quá trình thực nghiệm tiền xử lý.
Hình 4.1.1 ảnh phiếu kết quả trước khi lọc nhiễu làm mịn
Sau khi thực hiện làm mịn ảnh ta thu được kết quả như sau:
Hình 4.1.2 Ảnh phiếu kết quả sau khi phân ngƣỡng và lọc nhiễu
4.1.2 Thực nghiệm xoay ảnh Để nhận dạng chính xác phiếu kết quả thi TOEIC chúng ta phải xoay xoay ảnh không còn nghiêng như khi scaner Mẫu phiếu bị nghiêng khi scaner như sau:
Hình 4.1.3 Phiếu kết quả trước khi xoay lại
Hình 4.1.4 Phiếu kết quả sau khi xoay ảnh
Các thực nghiệm nhận dạng phiếu kết quả
4.2.1 Thực nghiệm nhận dạng khung
Sau khi nhận dạng khung ta xác định được các khung theo hình vẽ sau:
Để xác định khung cho phiếu kết quả, tôi đã thực hiện tách dòng nhằm nhận dạng ô trong phiếu Kết quả thu được từ quá trình này như sau:
Hình 4.2.2 Xác định dòng cho khung số báo danh và mã đề thi
Hình 4.2.3 Xác định dòng cho khung trả lời 4.2.3 Thực nghiệm tách ô và nhận dạng ô
Sau khi thực hiện nhận dạng dòng, chúng tôi tiếp tục thực hiện nhận dạng ô và kết quả của thực nghiệm ta thu được như sau:
Hình 4.2.4 Xác định ô cho khung số báo danh và mã đề thi
Hình 4.2.5 Xác định ô cho khung trả lời