NHIỆM VỤ VÀ NỘI DUNG: Luận văn tập trung nghiên cứu giải thuật siêu phân giải ảnh dựa trên một chuỗi các frame ảnh chất lương thấp ngõ vào, có khả năng ứng dụng lên các hệ thống nhúng nh
NGHIÊN CỨU TỔNG QUAN GIẢI THUẬT SIÊU PHÂN GIẢI ẢNH VÀ MẠNG NEURAL NHÂN TẠO
TỔNG QUAN NỘI DUNG NGHIÊN CỨU
Do siêu phân giải ảnh là một vấn đề kinh điển và đã có nhiều nghiên cứu liên quan được công bố do đó cách tiến cận trong đề tài này là tìm hiểu lại các giải thuật đã được công bố Sau đó tiến hành thử nghiệm và lựa chọn giải thuật phù hợp với các yêu cầu đặt ra của đề tài Cuối cùng là tối ưu, cải tiến giải thuật và ứng dụng lên các hệ thống nhúng
Theo hướng tiếp cận này, học viên thực hiện nghiên cứu theo các bước sau:
- Bước 1: Nghiên cứu về khái niệm siêu phân giải ảnh và các yếu tố làm suy giảm chất lượng ảnh
- Bước 2: Xây dựng tập ảnh mẫu bằng cách thêm vào ảnh các yếu tố tác động đến chất lượng ảnh
- Bước 3: Đưa ra các yêu cầu mà giải thuật phải đạt được
- Bước 4: Nghiên cứu về các giải thuật siêu phân giải ảnh hiện có, so sánh các đặc điểm của chúng, và thử nghiệm bằng tập ảnh mẫu đã xây dựng ở bước 2
- Bước 5: Lựa chọn giải thuật phù hợp với các yêu cầu đã được đề ra ở bước 3
Tiến hành tối ưu giải, cải tiến giải thuật đã chọn
- Bước 6: Nghiên cứu quy trình thiết kế hệ thống nhúng, lựa chọn các thiết bị phù hợp với đặc điểm của giải thuật đã chọn ở bước 5 và điều kiện thực tế
- Bước 7: Cài đặt thuật toán trên kít nhúng và tiến hành thử nghiệm đánh giá hệ thống, sau đó tiến hành tối ưu thêm nếu cần
2.1.2 Tổng quan về siêu phân giải ảnh số
2.1.2.1 Khái niệm về độ phân giải ảnh Độ phân giải là một khái niệm dễ gây nhầm lẫn vì nó được sử dụng với nhiều ý nghĩa rất khác nhau Trong trường hợp của một màn hình thì độ phân giải chính là số điểm ảnh mà nó có thể hiển thị Ví dụ, một màn hình có độ phân giải là 1024x768, tức là nó sẽ có 1024x768 điểm ảnh Tuy nhiên, trong trường hợp của một ảnh số thì độ phân giải cần được hiểu theo một ý nghĩa khác Ví dụ như ở Hình 1-3, hai ảnh a) và b) đều có cùng một kích thước là 128x128 pixel, và nó có cùng độ phân giải?
Nhận xét này rõ ràng không hợp lý Ở khái niệm độ phân giải lại mang ý nghĩ như là khả năng phân biệt các chi tiết trong một ảnh và như thế, hiển nhiên độ phân giải của ảnh a) phải lớn hơn ảnh b), bởi ta có thể nhận biết các chi tiết ở ảnh a) tốt hơn ảnh b)
Từ hai ví dụ trên, ta có thể định nghĩa rằng độ phân giải của một ảnh là khả năng phân biệt rõ ràng các chi tiết nhỏ nhất trong bức ảnh Các nhà nghiên cứu trong lĩnh vực xử lý ảnh số và thị giác máy tính thường sử dụng khái niệm độ phân giải ảnh trong một số tình huống sau [1]:
- Độ phân giải trong không gian (Spatial Resolution): là độ phân giải được đánh giá bằng số lượng điểm ảnh trong một Inch 1 (PPI 2 ) Đây chính là khả năng biễu diễn thông tin của bức ảnh trên một đơn vị diện tích, theo đó trên cùng 1 diện tích, ảnh nào có mật độ điểm ảnh lớn hơn thì nó sẽ chứa nhiều thông tin hơn và do đó sẽ có độ phân giải tốt hơn
- Độ phân giải về độ sáng (Brightness Resolution): là mức độ phân biệt các cường độ ánh sáng khác nhau ở một pixel bất kì Khái niệm liên quan đến số mức lượng tử của năng lương ánh sáng mà một cảm biến quang trong Camera
1 Inch: Đơn vị đo chiều dài, 1 Inch = 2.54 cm
7 thu nhận được Thông thường, Brightness Resolution của một ảnh đơn sắc (ảnh xám) là 256 tương ứng với 8 bit lượng tử Và đối với ảnh màu là 24 bit
Khái niệm này thường được biết đến như là độ sâu màu của một ảnh
- Độ phân giải về thời gian (Temporal Resolution) là số lượng khung hình được ghi nhận trong thời gian một giây Điều này liên quan đến khả năng phân biệt chuyển động của các đối tượng theo thời gian Thông thường, đối với một video thì chỉ số này phải ít nhất là 24 frame/s để mắt người không thể cảm nhận được sự chuyển đổi giữa các khung ảnh
Trong phạm vi luận văn này, khái niệm độ phân giải được sử dụng là độ phân giải trong không gian Và quá trình chuyển đổi từ một ảnh có độ phân giải thấp thành ảnh có độ phân giải cao gọi là siêu phân giải ảnh (Super Resolution)
2.1.2.2 Các yếu tố làm giảm độ phân giải của ảnh
Một bối cảnh thực 𝑋(𝑥, 𝑦) được ghi nhận bởi một Camera sẽ chịu ảnh hưởng bởi chuyển động tương đối giữa ống kính của Camera và bối cảnh, sự chuyển động của các đối tượng trong ảnh và độ rung của thiết bị trong quá trình chụp Tiếp đó, dưới tác động của các nhiễu động trong không khí 𝐻 𝑎𝑡𝑚 (𝑥, 𝑦), cường độ ánh sáng đi đến cảm biến trong quá trình chụp sẽ thay đổi dẫn đến hiện tượng nhòe ảnh Bên cạnh dưới tác động của Point Spread Function 3 (PSF) ở ống kính (𝐻 𝑐𝑎𝑚 (𝑥, 𝑦)), các điểm ảnh cũng bi nhòe đi Tiếp đó, quá trình rời rạc hóa tín hiệu ở các điểm cảm biến CCD cũng là một nguyên nhân tạo ra ảnh chất lượng thấp 𝑌(𝑚, 𝑛) Ta có thể mô hình hóa quá trình này bằng biểu thức toán học như sau:
(2.1) Trong đó là tích chập, F là hàm chuyển động, D là quá trình giảm mẫu và V(m,n) là ảnh hưởng của các nhiễu cộng Trong nghiên cứu của mình, Farsiu và cộng sự đã
3 https://en.wikipedia.org/wiki/Point_spread_function
8 chuyển đổi biểu thức (2.1) thành dạng tích các ma trận để sử dụng cho các ảnh số như sau:
- X: ảnh có độ phân giải cao
- Yk: ảnh có độ phân giải thấp thứ k
- Fk : ảnh hưởng của sự chuyển động
- 𝐻 𝑘 = 𝐻 𝑘 𝑎𝑡𝑚 ∗ 𝐻 𝑘 𝑐𝑎𝑚 : toán tử biểu diễn ảnh hưởng của SPF cũng như nhiễu động của môi trường khiến ảnh bị mờ
- Dk : ảnh hưởng của quá trình giảm mẫu
- Vk : nhiễu cộng Để thuận tiện cho quá trình khảo sát giải thuật, từ công thức (2.2), tôi đã xây dựng một mô hình tạo ra các ảnh có độ phân giải thấp từ một ảnh ban đầu có độ phân giải cao Theo đó, toán tử lọc Gaussian Filter được sử dụng để mô phỏng ảnh hưởng của 𝐻 𝑘 , và mô hình nhiễu ngẫu nhiên được sử dụng để mô phỏng ảnh hưởng của Vk Kết quả ngõ ra của hệ thống được trình bày ở Hình 2-1 bên dưới:
High-Resolution Image Blur Effect Motion Effect
Down-sampling Effect Low-Resolution
Hình 2-1: Kết quả ngõ ra của mô hình nhiễu
2.1.3 Các phương pháp siêu phân giải từ một ảnh ngõ vào
2.1.3.1 Các giải pháp phóng đại ảnh
Như đã trình bày ở biểu thức (2.2), quá trình giảm mẫu là một trong những nguyên nhân tạo ra ảnh có độ phân giải thấp Cụ thể, như ví dụ ở Hình 2-2, khi tiến hành giảm mẫu từ ma trận 9x9 xuống còn 3x3 (D) thì một lượng thông tin bị mất đi Và khi đó độ phân giải của ảnh giảm xuống Tuy nhiên quá trình tăng mẫu (D T ) từ một ảnh có độ phân giải thấp lại không cải thiện chất lượng ảnh, bởi vì lượng thông tin bị mất đi sẽ được thay thê bằng các giá trị 0, và đây là nguyên nhân tạo ra hình có độ phân giải thấp mà tôi đã trình bày ở chương trước
10 Hình 2-2: Quá trình tăng/giảm mẫu Để giải quyết vấn đề này, các phương pháp nội suy khác nhau được sử dụng để tính toán các giá trị bị mất đi trong quá trình tăng mẫu để tạo ra một ảnh có độ phân giải tốt hơn Có 3 giải thuật thường được sử dụng để nội suy ở miền không gian: Nearest Neighbor, Bilinear và Bicubic a Nearest Neighbor Interpolation Đây là giải thuật nội suy đơn giản nhất, giá trị của một pixel bị khuyết sẽ bằng giá trị của pixel ngay trước nó Hình 2-3 cho ta một ví dụ đơn giản, ở đây ta sẽ tăng kích thước của một ma trận 3x3 lên thành 7x7 sử dụng thuật toán nội suy Nearest Neighbor
Hình 2-3: Tăng mẫu từ kích thước 3x3 lên 7x7 dùng giải thuật Nearest Neighbor
11 Áp dụng giải thuật này cho ví dụ ở Hình 1-3 ta có kết quả như sau:
Hình 2-4: Kết quả nội suy dùng phương pháp Nearest Neighbor b Bilinear Interpolation
TỔNG QUAN VỀ MẠNG NEURAL
Mạng neural nhân tạo (Artificial Neural Networks: ANN) ra đời xuất phát từ ý tưởng mô phỏng hoạt động của bộ não con người Mạng neurral nhân tạo là sự tái tạo bằng kỹ thuật những chức năng của hệ thần kinh con người với vô số các neural được liên kết truyền thông với nhau qua mạng Giống như con người, ANN được học bởi kinh nghiệm, lưu những kinh nghiệm đó và sử dụng trong những tình huống phù hợp Một mạng neurral thường có nhiều lớp bao gồm: 1 lớp ngõ vào, 1 hoặc nhiều lớp nơ-ron ẩn và 1 lớp neural ngõ ra Cấu trúc của một mạng neural được trình bày ở Hình 2-21
Hình 2-21: Cấu trúc mạng neural nhiều lớp
28 Để đơn giản chúng ta xem xét một mạng neural đơn giản với 2 input ngõ vào, 1 lớp ẩn với 3 neural và 1 neural lớp ngõ ra như được trình bày ở Hình 2-22 a(2,1) a (2,2) a (2,3) a(3,1)
Hình 2-22: Ví dụ mạng neural Trong ví dụ này, ta có thể Yout được xác định như sau:
𝑎(2,1) = 𝑔(𝑤 1 (1,0) ∗ 𝑥 1 + 𝑤 1 (2,0) ∗ 𝑥 2 ) 𝑎(2,2) = 𝑔(𝑤 1 (1,1) ∗ 𝑥 1 + 𝑤 1 (2,1) ∗ 𝑥 2 ) 𝑎(2,3) = 𝑔(𝑤 1 (1,2) ∗ 𝑥 1 + 𝑤 1 (2,2) ∗ 𝑥 2 ) 𝑌 𝑜𝑢𝑡 = 𝑔(𝑤 2 (1,0) ∗ 𝑎(2,1) + 𝑤 2 (1,1) ∗ 𝑎(2,2) + 𝑤 2 (1,2) ∗ 𝑎(2,3)) Trong đó g là hàm đáp ứng (activation function) của mỗi neural, đó có thể là một trong các hàm được trình bày ở Hình 2-23 Nếu đặt
Lúc này ta sẽ có được hàm Yout ở dạng ma trận với W1 và W2 là các ma trận trọng số như ở hệ thức (2.4)
29 Hình 2-23: Ví dụ về các hàm đáp ứng thường được sử dụng trong mạng neural [16]
Quá trình huấn luyện mạng neural là quá trình cập nhật các ma trận trọng số Một mạng neural được huấn luyện (Training) hay được học (Learning) theo 2 kỹ thuật cơ bản đó là học có giám sát (Supervised Learning) và học không giám sát (Unsupervised Learning) [17]
- Supervised learning: Quá trình Training được lặp lại cho đến kết quả (output) của ANN đạt được giá trị mong muốn (Desired value) đã biết Điển hình cho kỹ thuật này là mạng Neuron lan truyền ngược (Backpropagation)
- Unsupervised learning: Không sử dụng tri thức bên ngoài trong quá trình học (Learning), nên còn gọi là tự tổ chức (Self – Organizing) Mạng Neuron điển
30 hình được huấn luyện theo kiểu Unsupervised là Sefl – Organizing Map (SOM)
Trong phạm vi luận văn này, tôi chỉ sử dụng kỹ thuật học Supervised nên phần tiếp theo tôi chỉ giới thiệu về kỹ thuật học supervised Quá trình học của supervised của một mạng neural lan truyền ngược được mô tả như lưu đồ Hình 2-24
Hình 2-24: Quá trình học mạng Theo đó sau khi tính toán từ các input value đã cho, ta có output là Y Giá trị mong muốn (Desired) là Z đã biết trước Sự chênh lệch giữa Y và kết quả mong muốn Z được biểu diễn bởi tham số lỗi: Δ = 𝑍 − 𝑌 Mục đích của việc huấn luyện mạng là làm sao cho Δ càng nhỏ càng tốt (Nếu Δ =0 là hoàn hảo nhất) bằng cách điều chỉnh trọng số (weights) của các dữ liệu vào Lược đồ Hình 2-25 mô tả quá trình cập nhật trọng số cho mạng neural
31 Hình 2-25: Quá trình điều chỉnh ma trận trọng số
NGHIÊN CỨU GIẢI THUẬT SIÊU PHÂN GIẢI ẢNH
Image registration
Trong trường hợp lý tưởng, ảnh một ảnh ngõ ra chất lượng cao HR sẽ được tạo thành từ 4 ảnh ngõ vào chất lượng thấp LR 4 như ở ví dụ Hình 3-2 Ở đây ta có thể thấy rằng ảnh HR được tạo ra bởi việc sắp xếp cái pixel của ảnh LR đến đúng vị trí của nó trên lưới ảnh HR Ta có thể xác định vị trí của các pixel trên lưới HR dựa trên
4 Ở phần này để đơn giản tôi sẽ gọi ảnh ngõ ra chất lượng cao là HR và ảnh ngõ vào chất lượng thấp là LR
34 chuyển động tương đối của chúng, quá trình xác định vị trí này gọi là Registration
Và bước đặt các pixel lên lưới HR gọi là Restoration
Hình 3-2: Ví dụ trường hợp lý tưởng của siêu phân giải ảnh Trong trường hợp tổng quát ta có thể chia một chuyển động bất kì thành hai chuyển động: chuyển động dịch (planar shift) và chuyển động quay (rotation) Do đó quá trình image registration bao gồm hai quá trình: ước lượng chuyển động dịch và ước lượng chuyển động xoay
3.1.1 Ước lượng chuyển động xoay
Chuyển động tương đối giữa hai frame ảnh cùng nền bất kì có thể được biểu diễn bằng hệ thức (3.1)
• 𝑅 𝜃 = (cos 𝜃 − sin 𝜃 sin 𝜃 cos 𝜃 ) : Rotation Thực hiện biến đổi Fourier cho (3.1) ta được:
(3.2) Đặt 𝑥 ′′ = 𝑅 𝜃 𝑥 ′ , chúng ta sẽ có được mối liên hệ về mặt biên độ như sau:
|𝐹 1 (𝑢)|= |𝐹 0 (𝑅 𝜃 𝑢)| (3.3) Điều này có nghĩa là mối tương quan về chuyển động quay ở miền tần số của hai ảnh f1 và f2 không bị lệ thuộc vào chuyển động dịch tịnh tiến Do đó ta có thể xấp xỉ được chuyển động quay một cách độc lập Và hệ thức (3.3) cũng chỉ ra rằng, F1 chính là một phiên của của F2 với cùng một góc quay tương ứng với f1 và f2 Dựa trên đặc điểm này Vandewalle đã đưa ra giải pháp để xác định chuyển động quay bằng cách xác định giá trị tương quan lớn nhất (maxium correlation value) của
(3.4) Ở đây, 𝐹(𝑢 𝑟 , 𝑢 𝜃 ) chính là F(u) được biến đổi sang tọa độ cực Để dễ hình dung ta sẽ xem xét ví dụ ở Hình 3-3 Sau khi tính toán các giá trị |𝐻 0 (𝛼)| and |𝐻 1 (𝛼)| ở các giá trị 𝛼 khác nhau, ta sẽ tìm được góc quay giữa hai ảnh từ kết quả của phép tính tương quan Trong ví dụ này thì độ tương quan lớn nhất nằm ở vị trí tương ứng với 25 o (Hình 3-4 bên phải)
36 Hình 3-3: Ảnh bên phải bị xoay một góc 𝜃 = 25 𝑜 so với ảnh bên trái và bên dưới là biến đổi Fourier tương ứng của hai ảnh trên
Hình 3-4: Kết quả tính |𝐻 0 (𝛼)| and |𝐻 1 (𝛼)| (hình bên trái), và tính tương quan của chúng (hình bên phải)
3.1.2 Ước lượng chuyển động dịch
Sau khi bù chuyển động xoay thì ta có thể viết lại (3.2) như sau:
(3.5) Ở đây ta có thể tính toán chuyển động dịch bằng độ lệch pha của F1(u) và F0(u)
Nội suy dựa trên mạng neural
Từ thông tin chuyển động tương đối được xấp xỉ ở bước Registration Quá trình
Image Restoration sẽ đặt các pixel của các ảnh LR lên đúng vị trí của nó trên lưới ảnh HR ngõ ra Trong trường hợp lý tưởng, khi có vừa đủ thông tin thì sau bước này ta sẽ có ảnh HR Tuy nhiên thực tế thì điều này rất khó xảy ra, và khi đó sẽ có hai vấn đề xảy ra:
- Pixel overlap: Hiện tượng này xảy ra khi có hai hay nhiều pixel được ánh xạ lên cùng một vị trí của lưới ảnh HR
- Unknown pixel: Hiện tượng này xảy ra khi một số vị trí trên lưới ảnh HR không được ánh xạ bởi bất cứ pixel nào trong tập ảnh LR ngõ vào
Hình 3-5 trình bày một ví dụ đơn giản về vấn đề Pixel Overlap và Unknow Pixel
Giả sử ta thực hiện siêu phân giải với một tập 4 ảnh LR ngõ vào: LR0, LR1, LR2, LR3 và độ dịch tương đối của LR1, LR2, LR3 với LR0 lần lượt là D LR1 = (0; 1), D LR2 = (0;
3), D LR3 = (1;0) Lúc này sẽ có hiện tượng chồng lấp ở các vị trí HR(0,3) và HR(2,3), đồng thời cũng sẽ xuất hiện các Unknow pixel (các vị trí được đánh dấu X)
38 Hình 3-5: Vấn đề Pixel overlap và unknow pixel Việc giải quyết vấn đề chồng lấp khá đơn giản, ta chỉ cần lấy giá trị trung bình của tất cả các pixel được ánh xạ đến cùng vị trí trên lưới HR Tuy nhiên đối với vấn đề Unknow pixel thì ta cần phải thực hiện quá trình nội suy để xác định được giá trị của chúng Ở đây học viên sử dụng một mạng neural đa lớp với 8 input ngõ vào và 1 input ngõ ra để thực hiện việc siêu phân giải (xem Hình 3-6)
Hình 3-6: Mạng neural đa lớp Mạng này sẽ được huấn luyện với tập mẫu được tạo thành bằng cách sử dụng một cửa sổ 3x3 quét lần lược trên từng pixel của ảnh mẫu Theo đó giá trị trung tâm là ngõ ra mong đợi và các giá trị xung quanh nó là các ngõ vào của mạng Sau khi huấn luyện xong thì mạng sẽ có khả năng dự đoán được giá trị của các unknow pixel dựa trên các pixel lân cận của nó Hình 3-7 minh họa cách tạo ra tập mẫu huấn luyện cho mạng
39 Hình 3-7: Tập mẫu huấn luyện mạng Do trên thực thế không phải lúc nào ta cũng có được thông tin của 8 pixel lân cận
“unknow pixel” Khi đó có thể xuất hiện nhiều hơn 1 “unknow pixel” ở trên 1 cửa sổ 3x3 Vì thế ta cần phải tạo ra các trường hợp khác nhau của một “training input” như ở Hình 3-7 bằng cách nhân nó với những giá trị Mask khác nhau Một số giá trị Mask được trình bày ở Hình 3-8 Bằng cách này ta có thể mở rộng tập mẫu học và qua đó cải thiện được độ chính xác của kết quả
Hình 3-8: Ví dụ các giá trị Mask Cuối cùng một bộ lọc Smooth (sử dụng mean filter hoặc median filter) sẽ được sử dụng để cải thiện chất lượng ảnh siêu phân giải ngõ ra Bảng 3-2 cho kết quả so sánh kết quả siêu phân giải trong trường hợp sử dụng bộ lọc Smooth và không sử dụng bộ lọc Smooth Kết quả này cho thấy rằng việc sử dụng bộ lọc Smooth cải thiện chất lượng của ảnh ngõ ra trong hầu hết các trường hợp
40 Bảng 3-2: So sánh kết quả sử dụng bộ lọc Smooth và không Smooth 5
PSNR SSIM PSNR SSIM skin_1 29.34743 0.79961 32.21431 0.87672 skin_2 32.78417 0.78154 27.10104 0.65981 skin_3 36.05377 0.90521 36.69072 0.94329 skin_4 33.6311 0.74993 45.875 0.98419 skin_5 35.9084 0.85912 42.7073 0.97058 skin_6 37.7024 0.8872 44.50751 0.97776 skin_7 29.47333 0.73269 31.9803 0.87032 skin_8 33.77498 0.85272 31.7867 0.83392 skin_9 25.27096 0.63194 33.81478 0.92368 skin_10 30.31554 0.6985 35.07351 0.90081
Siêu phân giải cho ảnh màu
Giải thuật siêu phân giải cho ảnh màu được xây dựng từ bằng cách thực hiện giải thuật siêu phân giải ở phần trước trên từng thành phần màu riêng biệt Tuy nhiên có hai vấn đề cần giải quyết đó là:
- Lựa chọn tập mẫu học cho mạng neural
Việc lựa chọn hệ màu phù hợp cho việc siêu phân giải ảnh được thực hiện bằng cách sử dụng một tập mẫu lý tưởng Các ảnh trong tập mẫu này được xây dựng sao cho sau quá trình Restoration ta có thể có được một ảnh HR ngõ ra mà không phải thực hiện bước nội suy Kết quả so sánh được trình bày Bảng 3-3, theo đó ta có thể thấy rằng hệ mày YCbCr cho kết quả siêu phân giải tốt nhất Điều này có thể được lý giải vì hệ màu YCbCr có sự độc lập giữa các thành phần màu, và thành phần Y chứa hầu
5 Chi tiết tập ảnh mẫu tham khảo ở phần PHỤ LỤC A
41 hết thông tin của ảnh Khi đó quá trình Registration sẽ thực hiện chính xác hơn trên thành phần này và kết quả siêu phân giải sẽ được cải thiện
Bảng 3-3: Kết quả so sánh chỉ số PSNR giữa các hệ màu
RGB YCbCr YIQ skin_1 7.74851 27.90712 4.35131 skin_2 7.90457 34.65989 4.32862 skin_3 8.00122 37.68849 4.26501 skin_4 6.66214 41.13953 4.32222 skin_5 6.88456 10.97669 4.3054 skin_6 7.3285 9.99837 4.15881 skin_7 7.64366 10.27037 4.04845 skin_8 7.183 10.11313 4.22468 skin_9 7.58677 28.43479 4.7877 skin_10 7.95529 10.18517 4.12795
Một vấn đề khác khi thực hiện siêu phân giải trên ảnh màu đó là chúng ta sẽ huấn luyện ba mạng neural khác nhau để nội suy từng thành phần màu hay chỉ sử dụng một mạng neural để thực hiện việc nội suy Bảng 3-4 cung cấp kết quả của việc khảo sát chất lượng ảnh HR ngõ ra trong trường hợp sử dụng một mạng neural (huấn luyện chỉ bằng thành phần Y của ảnh huấn luyện), và sử dụng ba mạng neural khác nhau để nội suy cho từng thành phần màu riêng biệt Kết quả khảo sát chỉ ra rằng việc sử dụng nhiều mạng neural cải thiện được chất lượng của ảnh HR ngõ ra, tuy nhiên sự cải thiện không đáng kể, trong khi phải đánh đổi chi phí bộ nhớ khi phải lưu trữ cả ba bộ trọng số cho các mạng neural dùng trong quá trình nội suy
42 Bảng 3-4: Khảo sát kết quả ngõ ra trong trường hợp sử dụng một mạng và ba mạng neural cho từng thành phần màu
Single- neural net Multi- neural net PSNR SSIM PSNR SSIM skin_1 20.50803 0.87123 25.26679 0.97051 skin_2 34.63973 0.99591 34.69538 0.99594 skin_3 23.15387 0.93333 28.87819 0.98699 skin_4 41.22336 0.9992 41.28993 0.99921 skin_5 39.27882 0.99884 39.273 0.99883 skin_6 39.84103 0.99869 39.84218 0.99869 skin_7 33.1292 0.99513 33.1292 0.99513 skin_8 30.94725 0.99099 30.96007 0.991 skin_9 27.0579 0.96925 27.0683 0.96928 skin_10 23.34745 0.94346 29.28525 0.98998
Tối ưu giải thuật
Trong quá trình thử nghiệm giải thuật với các ảnh ngõ vào thu được từ Camera, ta thấy rằng góc quay () giữa các frame ảnh là rất nhỏ Bảng 3-5 là kết quả khảo sát chuyển động quay tương đối giữa một tập 5 mẫu với 5 ảnh mỗi mẫu được chụp bởi kính lúp điện tử ở tốc độ 10 frame ảnh/giây Kết quả này cho thấy rằng, ta có thể bỏ qua phần ước lượng chuyển động quay trong việc cài đặt thuật toán trên board nhúng mà không làm ảnh hưởng đến chất lượng siêu phân giải
Bảng 3-5: Khảo sát góc quay () giữa các frame ảnh
Image 1 Image 2 Image 3 Image 4 Image 5 Sample set 1 -0.01 -0.01 -0.01 -0.01 -0.01
Kiểm chứng giải thuật
Để kiểm chứng giải thuật được đề xuất học viên đã cài đặt giải thuật trên matlab với sử dụng ngõ vào là ảnh Gray để tương ứng với mã nguồn các giải thuật của Hong Chan [18] và Vandewall [19] Tập ảnh mẫu kiểm tra được trình bày ở Hình 3-9
Hình 3-9: Tập mẫu huấn luyện mạng Từ các ảnh này, học viên tạo ra các ảnh chất lượng thấp bằng cách giảm mẫu và thêm vào các yếu tố ảnh hưởng đến chất lượng ảnh đã được trình bày ở mục 2.1.2.2 Ảnh ngõ ra sẽ được đánh giá bằng các chỉ số PSNR và SSIM so với ảnh gốc ban đầu Trong thực nghiệm này, học viên chỉ sử dụng ảnh Gray nên mạng neural được huấn luyện với tập ảnh Gray như ở Hình 3-10
Hình 3-10: Tập mẫu huấn luyện mạng Bảng 3-6 và Hình 3-11 thể hiện kết quả so sánh giữa các giải thuật Kết quả này cho thấy rằng giải thuật siêu phân giải được đề xuất cho kết quả tốt hơn ở chỉ số PSNR và SSIM trong hầu hết các trường hợp
44 Bảng 3-6: Kết quả đánh giá giải thuật
Hình 3-11: Kết quả siêu phân giải
ĐẶC TẢ THIẾT KẾ THIẾT BỊ SIÊU PHÂN GIẢI ẢNH DÙNG
Tính năng sản phẩm
Thiết bị siêu phân giải ảnh phải đạt được các yêu cầu:
- Nhỏ gọn dễ di chuyển
- Thời gian thực hiện giải thuật siêu phân giải nhanh
- Giao diện đơn giản dễ sử dụng
- Cho phép tùy chỉnh độ phóng đại, và số lượng ảnh ngõ vào
Đặc tả phần cứng
Sơ đồ khối thiết kế hệ thống được trình bày ở Hình 4-1 Theo đó hệ thống cải thiện độ phân giải ảnh bao gồm
Khối Xử Lý Khối hiển thị
Khối giao tiếp người dùng Khối Camera
Hình 4-1: Sơ đồ tổng quát hệ thống tổng quát
- Khối Camera: khối thu nhận hình ảnh từ thế giới thực, làm đầu vào cho quá trình xử lý
- Khối xử lý : Bộ phận xử lý trung tâm, chịu trách nhiệm thực hiện giải thuật siêu phân giải ảnh và tạo ra ảnh HR ngõ ra
- Khối hiển thị: Khối hiển thị ảnh HR ngõ ra và các thông tin của hệ thống
- Khối giao tiếp người dùng: Khối tiếp nhận các thao tác của người sử dụng và truyền cho khối xử lý
4.2.2 Các module phần cứng trong hệ thống
Trong luận văn này tôi sử dụng Kit nhúng Rasberry Pi2 với vai trò là khối xử lý cho toàn bộ hệ thống Đây là một Kit nhúng có giá thành thấp nhưng vẫn đảm bảo đủ hiệu năng xử lý cho các ứng dụng xử lý ảnh và video Kit Rasberry Pi2 sử dụng một chip ARM Cortex-A7 hoạt động ở tốc độ tối đa là 1GHz, 1GB bộ nhớ RAM và hỗ trợ đầy đủ các giao tiếp với các thiết bị ngoại vi và màn hình thông qua các cổng USB và HDMI được tích hợp sẵn trên Board Bên cạnh đó Kit này được phân phối kèm với hệ điều hành “Raspbian” với một cộng đồng người sử dụng lớn, khiến việc phát triển ứng dụng trở nên dễ dàng và nhanh chóng
Camera được sử dụng trong hệ thống demo là một kính lúp điện tử với độ phóng đại 500x thường được dùng như một máy soi da Kính lúp này hỗ trợ giao tiếp ngõ ra qua cổng USB Thiết bị hiển thị là một màn hình LCD 7” với độ phân giải 1024*600 có thể kết nối với board nhúng thông qua giao thức HDMI Và cuối cùng mà một bàn phím mini được sử dụng để người dùng có thể thao tác với hệ thống Chi tiết toàn bộ các thành phần phần cứng được trình bày ở Hình 4-2
Hình 4-2: Các module phần cứng trong hệ thống.
Đặc tả phần mềm
Lưu đồ thuật toán được cài đặt ở khối xử lý được trình bày ở Hình 4-3
Smooth Filter Output HR image
Hình 4-3: Lưu đồ thuật toán Trong đó Shift Estimation và Image Interpolation được hiện thực bằng kĩ thuật multi-threading để tăng tốc độ xử lý Theo đó ta có thể tạo ra tối đa N-1 luồng xử lý song song để xác định các thông số chuyển động tương đối của N frame ảnh LR ngõ
49 vào Và 3 luồng xử lý song song để thực hiện việc nội suy các điểm ảnh ở 3 thành phần màu Y, Cb và Cr
Giải thuật siêu phân giải ảnh được hiện thực theo hướng tiếp cận hướng đối tượng với hai lớp xử lý cốt lõi là:
Cả hai lớp sử lý này được hiện thực dựa trên việc sử dụng các thành phần khác nhau của thư viện OpenCV và Qt 6 a Neural_net class: Đây là lớp cung cấp các phương thức thao tác với mạng neural bao gồm:
- nnCreate(): Hàm khởi tạo mạng neural, hàm này có chức năng tương đương với hàm “newff” trong matlab Bằng cách cung cấp các thông tin: số lượng input ngõ vào, số lớp ẩn và số lượng neural tương ứng của từng lớp ẩn Người sử dụng có thể khởi tạo được một mạng neural
- nnLoadTheta(): Hàm này có trách nhiệm load các trọng số (đã được huấn luyện) cho mạng neural từ một file binary chứa các trọng số của một mạng neural tương đương đã được huấn luyện bằng Matlab
- nnPredict(): Hàm này sẽ đưa ra các giá trị dự đoán ở ngõ ra của mạng neural với các trọng số đã được load vào bởi hàm nnLoadTheta() và các input được cung cấp như là một tham số của hàm
6 Chi tiết source code của các lớp trong chương trình tham khảo ở PHỤ LỤC B
Lớp này hiện thực giải thuật siêu phân giải được trình bày ở lưu đồ Hình 4-3 với hai hàm chính như sau:
- Shift_estimation(): hàm ước lượng chuyển động dịch, đầu vào hàm là một mảng các ma trận chứa thông tin của các ảnh LR được thu thập bởi camera
Hàm này trả về một ma trận có kích thươc mx2.Với m là số lượng ảnh LR ngõ vào
- Image_SR(): hàm hiện thực giải thuật siêu phân giải ảnh, hàm này thực hiện quá trình ánh xạ các pixel của ảnh LR lên ảnh HR ngõ ra dựa trên thông tin được cung cấp bởi Shift_estimation() Đồng thời nó cũng thực hiện việc xử lý các vấn đề “unknown pixel”, “overlap pixel” và nội suy dựa trên mạng neural
Mạng neural được huấn luyện bằng cách sử dụng công cụ huấn luyện mạng neural của matlab với tập ảnh mẫu được trình bày ở Hình 4-4
Hình 4-4: Tập ảnh huấn luyện mạng Kết quả ma trận trọng số sau khi huấn luyện sẽ được lưu trữ ở một file binary bằng đoạn mã sau:
51 wb = getwb(net); %net la mang neural da duoc huan luyen [b,iw,lw] = separatewb(net,wb); if colorChanel == 1 [F,err] = fopen('test_neural_color_Y.wbs','w'); net_Y = net; save('learned_net_color_Y.mat','net_Y','-mat'); elseif colorChanel == 2 [F,err] = fopen('test_neural_color_Cb.wbs','w'); net_Cb = net; save('learned_net_color_Cb.mat','net_Cb','-mat'); else [F,err] = fopen('test_neural_color_Cr.wbs','w'); net_Cr = net; save('learned_net_color_Cr.mat','net_Cr','-mat'); end if F