3.2.1. Mô hình xử lý ảnh trong bài toán
Trong thực tế, xử lý ảnh là một lĩnh vực rất rộng, vì thế trong đồ án này tác giả chỉ nói về các thuật toán xử lý ảnh sẽ phải dùng trong đồ án. Cụ thể, tác giả sử dụng mô hình xử lý ảnh của Rowley [16]:
46 Hình 3.4. Các thuật toán xử lý ảnh trong đồ án
Như hình trên, sẽ có 3 thuật toán dùng trong đồ án này: Xám hóa ảnh: Đưa ảnh về không gian màu 1 byte.
Cân bằng ánh sáng: Làm cho độ sáng trong ảnh đạt mức trung bình (Không quá sáng và không quá tối).
Cân bằng lược đồ xám: Giúp cải thiện độ tương phản trong ảnh.
3.2.2. Xám hóa ảnh
Trong nhiếp ảnh và máy tính, ảnh số màu xám là một hình ảnh trong đó giá trị của mỗi điểm ảnh là một mẫu duy nhất, nó chỉ mang thông tin cường độ. Hình ảnh loại này còn được gọi là màu đen và trắng, được cấu tạo hoàn toàn các sắc thái của màu xám, thay đổi từ màu đen ở cường độ yếu nhất để trắng ở mức cao nhất(0 - 255).
Ảnh xám thường là kết quả đo cường độ ánh sáng tại mỗi điểm ảnh trong một dải quang phổ điện từ (Ví dụ như hồng ngoại, ánh sáng nhìn thấy, tia cực tím,…) và trong trường hợp như vậy, chúng là màu đơn sắc do chỉ được chụp ở một tần số màu nhất định. Nhưng chúng cũng có thể được tổng hợp từ một hình ảnh đa sắc, vậy phần này sẽ nói về việc chuyển từ 1 ảnh màu đa sắc sang ảnh xám.
47 Xám hóa ảnh là một thuật toán khá dễ dàng vì ta áp dụng toán tử điểm (Xử lý ngay lại trên điểm đó). Đa phần các tài liệu đều đề cập tới 1 trong 2 công thức xám hóa ảnh sau:
Ix,y = 0.3086 × Rx,y + 0.6094 × Gx,y + 0.082 × Bx,y Hay
Ix,y = 0.299 × Rx,y + 0.587 × Gx,y + 0.114 × Bx,y Trong đó:
I: Mức xám được tính tại điểm ảnh (x,y) R: Giá trị màu đỏ tại điểm ảnh (x,y) G: Giá trị màu xanh lá tại điểm ảnh (x,y) B: Giá trị màu xanh dương tại điểm ảnh (x, y)
Tuy nhiên, việc tính giá trị trường số thực trong máy tính lâu hơn trường số nguyên, và hơn hết là sau khi sử dụng 1 trong 2 công thức trên đa phần ta nhận được kết quả là 1 số thực, việc này lại làm ta tốn thời gian ép lại kiểu số nguyên để biểu diễn mức xám điểm ảnh (Máy chỉ hiểu được số nguyên), vì vậy người ta đã chứng minh 1 công thức tính mức xám trên trường số nguyên như sau:
Ix,y = (2 × Rx,y+ 5 × Gx,y + 1 × Bx,y)/8
Dựa vào công thức trên, sẽ giúp ta tính toán giá trị mức xám nhanh hơn công thức ở trường số thực. Vì ảnh xám chỉ có 1 mức xám, nên người ta có thể dùng chỉ 1 byte, tức là 8 bit để biểu diễn loại ảnh xám này. Tuy nhiên ta cũng có thể biểu diễn ảnh xám trong không gian RGB bằng cách gán R = G = B = I thì hiệu ứng cho ra cũng cho ra ảnh xám đúng mẫu.
Trong thực tế, các công cụ hỗ trợ đồ họa có hỗ trợ các định dạng biểu diễn ảnh xám bằng chỉ 1 byte, tức là ảnh 8 bit, việc này làm cho ảnh nhẹ đi gấp 3 lần, PGM (Portable Gray Map) là 1 định dạng mẫu cho việc này, tuy nhiên việc đọc ảnh này lên ngôn ngữ lập trình C# mà tác giả sử dụng là khá phức tạp, nên tác giả vẫn sử dụng định dạng JPG để biểu diễn ảnh xám bằng không gian màu RGB.
48
3.2.3. Cân bằng ánh sáng
Ý tưởng
Như đã nói ở mục trên, cân bằng ánh sáng là một thuật toán sao cho độ sáng ảnh sau khi xử lý ở mức độ sáng trung bình (Không quá sáng và không quá tối). Một số ví dụ sau:
Hình 3.5. Ảnh bị tối bên phải
Hình 3.6. Ảnh bị tối bên trái
Hình 3.7. Ảnh bị tối toàn diện
Ý tưởng để xử lý: Ta cần tìm 1 hàm tuyến tính, sao cho hàm này tính được giá trị sáng trung bình của ảnh hiện tại, sau đó ta lấy ảnh gốc trừ cho hàm tuyến tính này, như vậy ta sẽ đưa độ sáng của ảnh về một mức độ sáng tương đương nhau.
Để xây dựng được hàm này, ta cần phải tìm hiểu một dạng toán trong thống kê, đó là mô hình hồi quy tuyến tính (Linear Regression).
Giới thiệu về hồi quy tuyến tính
Hồi quy tuyến tính có 2 dạng: - Hồi quy tuyến tính đơn biến - Hồi quy tuyến tính đa biến
Trong đồ án này, chúng ta chỉ tìm hiểu về hồi quy tuyến tính đơn biến, lý do thì ở phần 3.2.3.3 tác giả sẽ giải thích.
49 Hồi quy tuyến tính nói theo cách dễ hiểu nó là 1 đường thẳng, dĩ nhiên đường thẳng này phải có mục đích nào đó để thỏa mãn một điều kiện nào đó.
Giả sử trong không gian 2 chiều, ta có 2 điểm như sau:
Hình 3.8. Không gian 2 chiều với 2 điểm Ta sẽ dễ dàng tìm được 1 đường thẳng đi qua 2 điểm này:
Hình 3.9. Không gian 2 chiều với 2 điểm Vấn đề xảy ra là nếu có nhiều hơn 2 điểm:
Hình 3.10. Không gian 2 chiều với nhiều điểm
y O x O y x
50 Vấn đề bắt đầu từ đây, rõ ràng với nhiều điểm biến thiên khác biệt như vậy, ta không thể tìm được đường thẳng nào cùng 1 lúc đi qua tất cả các điểm, mà ta chỉ có thể đi tìm 1 đường thẳng trung bình đi qua tất cả các điểm.
Hình 3.11. Một số đường thẳng đi qua tất cả các điểm
Hình 3.11 nói lên rằng, ta có thể vẽ được vô số các đường thẳng gọi là “trung bình” đi qua các điểm. Tuy nhiên, ta phải tìm được đường thẳng nào có tính “khoa học” cao nhất, cụ thể ở đây là phải thỏa mãn tổng sai số là nhỏ nhất, tức là tổng khoảng cách từ giá trị trục y của mỗi điểm đến đường thẳng ứng với giá trị tại trục x đó là nhỏ nhất.
51 Hình 3.12. Minh họa về đoạn sai số
Tóm lại, nhiệm vụ của “hồi quy tuyến tính” là tìm ra một đường thẳng “trung bình” đi qua tất cả các điểm, sao cho đường thẳng này có tổng sai số (Phần dư) giữa các giá trị y của điểm so với đường thẳng là nhỏ nhất. Đường thẳng này gọi là đường “hồi quy”, và vì nó thẳng nên gọi là “hồi quy tuyến tính”.
Hồi quy tuyến tính đơn biến
Định nghĩa [17]: Để mô hình hóa quan hệ tuyến tính trong đó diễn tả sự thay đổi của biến Y theo biến X cho trước người ta sử dụng mô hình hồi quy tuyến tính đơn giản.
Để dễ hiểu, ta xét ví dụ về một trường hợp thống kê thị trường bất động sản sau:
Bảng 3.1. Số liệu thống kê thị trường bất động sản Nhà có giá 160 ngàn đô la bán được 126 căn.
Nhà có giá 180 ngàn đô la bán được 103 căn. Nhà có giá 200 ngàn đô la bán được 82 căn.
52 Như vậy ta xác định được biến độc lập X là giá bán và biến phụ thuộc Y là số lượng nhà bán được.
Lưu ý:
- Biến độc lập: là “hệ số”, “biến ngoại sinh”, “biến thuyết minh”, hay “biến – X”.
- Biến phụ thuộc: là “biến đầu ra”, “biến nội sinh”, “biến được thuyết minh”, hay “biến – Y”.
- Ví dụ: sự phụ thuộc của huyết áp Y theo tuổi tác X của một người, hay sự phụ thuộc của trọng lượng Y của một con thú nào đó theo khẩu phần thức ăn hằng ngày X. Sự phụ thuộc này được gọi là hồi quy của Y lên X.
Ta có sơ đồ sau:
Hình 3.13. Sơ đồ thống kê thị trường bất động sản
Ta có nhiều đường thẳng có thể gọi là “trung bình” đi qua tất cả các điểm, vì khái niệm “trung bình” chỉ là tự định nghĩa cho dễ hiểu.
53 Hình 3.14. Các đường thẳng “trung bình” có thể đi qua các điểm
Như đã giới thiệu, việc cần làm là trong vô vàn những đường thẳng này, ta làm sao tìm được đường thẳng có tổng sai số giữa các biến biến phụ thuộc Y (Giá trị quan sát được) và các giá trị ước lượng (Các điểm nằm trên đường thẳng có hoành độ bằng X) là nhỏ nhất.
Hình dưới đây thể hiện đoạn sai số đó:
54 Để giải quyết bài toán này, ta sử dụng phương pháp tổng bình phương nhỏ nhất [18] (Sum of Square Error), và chúng ta chọn đường thẳng có giá trị lỗi nhỏ nhất, đường thẳng đó chính là đường “Hồi quy tuyến tính tốt nhất” mà ta cần tìm.
Gọi phương trình đường thẳng cần tìm là: Y
̅ = a + bX Gọi E là giá trị lỗi, ta có:
E = ∑n (Yi− Y̅i)2
i = 1 = ∑ (Yn i− a − bXi)2
1 (vì Y̅ = a + bX)
Trong đó:
Y̅: là giá trị ước lượng
a: là ước lượng thông số diễn tả tung độ gốc của đường hồi quy của tập hợp chính, hay là ước lượng giá trị trung bình của biến phụ thuộc Y khi biến độc lập X thay đổi 1 đơn vị.
b: là ước lượng thông số diễn tả độ dốc của đường hồi quy của tập hợp chính, hay là ước lượng diễn tả sự hay đổi của giá trị trung bình của biến phụ thuộc Y khi biến độc lập X thay đổi 1 đơn vị.
Mục đích của ta là làm sao cho giá trị lỗi E đạt cực tiểu, mà phương trình lỗi này phụ thuộc vào 2 tham số a và b, vì vậy ta cần tìm là làm sao đạt được 2 tham số a và b cực tiểu, tức là = 0, vì vậy ta giải hệ phương trình sau:
55 Áp dụng vào công thức, ta sẽ tính được: a = 0.8 và b = 0.5.
Vậy ta có:
y = 0.8 + 0.5x
Áp dụng hồi quy tuyến tính vào vấn đề
Theo [19], ý tưởng của ta sẽ bắt đầu từ việc thống kê hồi quy tuyến tính trên từng dòng. Giả sử ta có biểu đồ sau:
Hình 3.16. Thống kê về độ sáng của mỗi cột trên dòng
Hình 3.16 là thống kê về mức độ sáng của mỗi cột trên 1 dòng, với trục Ox là thứ tự cột và trục Oy là độ sáng của cột đó (Giá trị sáng tối đa là 255). Như vậy đầu tiên ta cần tìm một đường hồi quy tuyến tính của từng dòng:
56 Hình 3.17. Hồi quy tuyến tính của dòng
Sau khi áp dụng cho các dòng, ta sẽ có đường hồi quy của độ sáng của các dòng. Bây giờ mỗi giá trị độ sáng ta quan sát được của mỗi cột ta không quan tâm tới nữa, ta chỉ lấy giá trị ước lượng của mỗi cột.
Tiếp tục áp dùng tính toán hồi quy cho từng cột, với mỗi dòng là giá trị ước lượng mà ta đã tính ứng với cột đó. Như vậy sau khi tính xong ra sẽ có phương trình hồi quy tuyến tính của ảnh.
Ta sẽ tiến hành trừ ảnh gốc với hàm tuyến tính này, cụ thể ta có ví dụ sau: 45 70 130 112
48 52 152 132 53 56 114 108 62 78 133 224
Ảnh gốc
Ta thấy độ sáng của ảnh này bị lệch, nửa bên trái bị tối (Giá trị sáng nhỏ) và nửa bên phải lại có xu hướng sáng hơn. Dựa vào lý thuyết đã nêu, ta tiến hành tính đường hồi quy tuyến tính theo từng dòng, và sử dụng giá trị ước lượng của từng dòng để tính hồi quy tuyến tính theo ừng cột. Như vậy ta có được hàm tuyến tính như sau:
57 44 74 104 133 49 77 104 132 53 79 105 131 58 82 106 130 Hàm tuyến tính Trừ ảnh gốc với hàm tuyến tính, ta được:
1 –4 26 –21 –1 –25 48 0
0 –23 9 –23
4 –4 27 –6
Trừ ảnh gốc và hàm tuyến tính
Như vậy tới đây, ta có thể thấy sự biến thiên về độ sáng giá trị giữa các phần tử đã được giảm, tức là độ sáng của ảnh không còn quá chênh lệch nữa. Lấy ví dụ ở dòng 1, cột 2 và cột 3 bây giờ chỉ chênh lệch nhau |-4 - 26| = 30 đơn vị, trước đó là |70 - 130| = 60 đơn vị.
Tuy đã tìm được ảnh trừ, nhưng giá trị sáng của nó quá thấp, đồng thời có những giá trị âm ta sẽ không biểu diễn màu được, vì vậy ta phải cộng thêm một lượng sáng trung bình nữa, ở đây tác giả chọn giá trị 128 [19], giá trị này được xem là ánh sáng trung bình vì là đoạn giữa của [0, 255]. Như vậy ta có được ảnh cuối cùng sau khi xử lý như sau: 129 124 154 107 127 103 176 128 128 105 137 105 132 124 155 122 Ảnh sau khi xử lý
Như vậy sau khi xử lý, ánh sáng trong ảnh đã đạt giá trị sáng trung bình (Xoay quanh 128), đồng thời độ sáng giữa các vùng đã không còn chênh lệch quá lớn, nhưng ta vẫn giữ được sự chênh lệch vừa phải giữa các điểm ảnh để giữ được các đường nét cũng như đặc trưng của ảnh.
3.2.4. Cân bằng lược đồ xám
Lược đồ mức xám của một ảnh hay còn gọi là lược đồ xám, là một hàm cung cấp tần suất xuất hiện của mỗi mức xám (Grey level).
58 Lược đồ xám được biểu diễn trong một hệ toạ độ vuông góc x,y. Trong hệ toạ độ này, trục hoành biểu diễn số mức xám từ 0 đến N, N là số mức xám (256 mức trong trường hợp chúng ta xét). Trục tung biểu diễn số điểm ảnh cho một mức xám (Số điểm ảnh có cùng mức xám). Cũng có thể biểu diễn khác một chút: trục tung là tỷ lệ số điểm ảnh có cùng mức xám trên tổng số điểm ảnh.
Hình 3.18. Ví dụ về lược đồ xám
Lược đồ a giá trị màu điểm ảnh tập trung gần gốc tọa độ, nên giá trị màu của các điểm ảnh này gần với 0. Xét ảnh xám trong không gian RGB, nếu giá trị màu càng gần về 0 thì ảnh càng đen (Màu đen là R = G = B = 0), nên ta biết lược đồ a là ảnh đậm.
Lược đồ b thì ngược lại, giá trị màu xa gốc tọa độ nên các giá trị màu của điểm ảnh có xu hướng sáng, gần màu trắng hơn.
Lược đồ xám cung cấp rất nhiều thông tin về phân bố mức xám của ảnh. Theo thuật ngữ của xử lý ảnh gọi là tính động của ảnh. Tính động của ảnh cho phép phân tích trong khoảng nào đó phân bố phần lớn các mức xám của ảnh: ảnh rất sáng hay ảnh rất đậm. Nếu ảnh sáng, lược đồ xám nằm bên phải (Mức xám cao), còn ảnh đậm luợc đồ xám nằm bên trái (Mức xám thấp).
Theo định nghĩa của lược đồ xám, việc xây dựng nó là khá đơn giản. Thuật toán xây dựng lược đồ xám có thể mô tả như sau:
59
Bắt đầu
H là bảng chứa lược đồ xám (Là vector có N phần tử) Bước 1: Khởi tạo lược đồ
Đặt tất cả các phần tử của bảng là 0 Bước 2: Tạo lược đồ
Với mỗi điểm ảnh i(x,y) tính H[i(x,y)] = H[i(x,y)] + 1 Bước 3: Cộng dồn lược đồ
Với mỗi điểm ảnh thứ i (bắt đầu từ 1), lấy số lượng điểm ảnh thứ i cộng dồn với số điểm ảnh i – 1, tức là H[i] = H[i] + H[i – 1]c
Bước 4: Cân bằng lược đồ
Tính H[i] = (255 × H[i])/Tổng số điểm ảnh (dài × rộng) Bước 5: Gán lại cho ảnh
Với mỗi giá trị điểm ảnh g, tìm ra H[g] đã được cân bằng và gán lại g cho ảnh.
60
PHƯƠNG PHÁP PHÂN TÍCH THÀNH PHẦN CHÍNH
4.1. Một số kiến thức cần biết
4.1.1. Trị riêng, vector riêng của ma trận
Xét một toán tử tuyến tính f trong không gian Rn với các vector cơ sở: ei = [0. . .1. . .0] T (Với giá trị 1 nằm tại vị trí thứ i) (4.1)
Toán tử tuyến tính này sẽ được biểu diễn bởi một ma trận vuông T kích thước n×n.
Một đại lượng vô hướng λ được gọi là trị riêng của toán tử f, hay của ma trận T, nếu tìm được một vector x, x ≠ 0, sao cho:
f(x) = λx (4.2) hay T × x = λx (4.3)
Vector x khi đó được gọi là vector riêng của f, hay T, ứng với trị riêng λ.
Ma trận T với kích thước n × n trên đây sẽ có tối đa n trị riêng và n vector riêng tương ứng. Một ma trận T khả nghịch đảo sẽ có đủ n trị riêng (Kể cả trị riêng bội) và n vector riêng tương ứng.
4.1.2. Kì vọng và phương sai trong thống kê đa chiều
Ma trận T (biểu diễn trong không gian Rn với các vector cơ sở ei nêu trên) được gọi là chéo hóa được nếu tồn tại một cơ sở trong không gian Rn sao cho ma trận T biểu diễn trong cơ sở đó có dạng chéo (Các phần tử ngoài đường chéo bằng 0).
Ví dụ: Khảo sát trên không gian R5 với ma trận chéo 5 × 5.