2 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ MAI TRUNG NGUYÊN THIẾT KẾ MÔ-ĐUN TÁI TẠO HÌNH ẢNH TRONG HỆ THỐNG NÉN ẢNH SỬ DỤNG THUẬT TOÁN NHẬN BIẾT CHUYỂN ĐỘNG SIGMA-DELTA Ngành
Trang 11
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
MAI TRUNG NGUYÊN
THIẾT KẾ MÔ-ĐUN TÁI TẠO HÌNH ẢNH TRONG HỆ THỐNG NÉN ẢNH SỬ DỤNG THUẬT TOÁN NHẬN BIẾT CHUYỂN ĐỘNG
SIGMA-DELTA
LUẬN VĂN THẠC SĨ CÔNG NGHỆ ĐIỆN TỬ - VIỄN THÔNG
HÀ NỘI – 2013
Trang 22
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
MAI TRUNG NGUYÊN
THIẾT KẾ MÔ-ĐUN TÁI TẠO HÌNH ẢNH TRONG HỆ THỐNG NÉN ẢNH SỬ DỤNG THUẬT TOÁN NHẬN BIẾT CHUYỂN ĐỘNG
SIGMA-DELTA
Ngành: Công nghệ Điện Tử - Viễn Thông
Chuyên ngành: Kỹ thuật Điện tử
Mã số: 60520203
LUẬN VĂN THẠC SĨ CÔNG NGHỆ ĐIỆN TỬ - VIỄN THÔNG NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS Trần Xuân Tú
HÀ NỘI – 2013
Trang 33
LỜI CẢM ƠN
Em xin gửi lời cảm ơn sâu sắc đến Thầy PGS.TS Trần Xuân Tú đã tạo mọi điều kiện và giúp đỡ em hoàn thành luận văn này Em cũng xin cảm ơn tới các bạn, các anh cán bộ của Phòng thí nghiệm mục tiêu Hệ thống tích hợp thông minh (SIS) đã
hỗ trợ và giải đáp các vướng mắc của em trong suốt quá trình nghiên cứu
Em xin cảm ơn các Thầy Cô trong Khoa Điện tử - Viễn thông, Trường Đại học Công nghệ, Đại học Quốc gia Hà Nội đã tận tình truyền đạt những kiến thức bổ ích trong thời gian em học tập tại trường
Cuối cùng em xin gửi lời cảm ơn đến gia đình, bạn bè đã luôn bên em, cổ vũ và động viên em trong những lúc khó khăn để có thể hoàn thành luận văn này
EM XIN CHÂN THÀNH CẢM ƠN !
Trang 44
LỜI CAM ĐOAN
Tôi xin cam đoan đây là luận văn do tôi tự làm, không sao chép ở tài liệu hay các công trình nghiên cứu đã có Những phần có sử dụng tài liệu trong luận văn đã ghi rõ tên tài liệu trong phần tài liệu tham khảo Những phần trích dẫn cũng đƣợc ghi rõ nguồn tham khảo
Hà Nội, ngày 20 tháng 9 năm 2013
Mai Trung Nguyên
Trang 55
MỤC LỤC
LỜI CẢM ƠN 1
LỜI CAM ĐOAN 4
MỤC LỤC 5
GIỚI THIỆU 9
Chương 1.KỸ THUẬT NHẬN DẠNG CHUYỂN ĐỘNG 11
1.1 Khái niệm về bài toán phát hiện chuyển động 11
1.2 Phương pháp trừ nền 11
1.3 Phương pháp thống kê 12
1.4 Phương pháp chênh lệch tạm thời 13
1.5 Phương pháp lưu lượng thị giác 13
1.6 Các thuật toán xử lý trong phương pháp trừ nền 14
1.7 Lý do lựa chọn thuật toán Sigma-Delta [1] 20
Chương 2.GIỚI THIỆU VỀ KỸ THUẬT NÉN ẢNH JPEG 22
2.1 Tổng quan 22
2.2 Quá trình mã hóa 23
2.3 Chuyển đổi hệ màu 23
2.4 Lấy mẫu 24
2.5 Biến đổi DCT 25
2.6 Lượng tử hóa 26
2.7 Mã hóa Entropy 27
2.8 Quá trình giải nén 31
2.9 Cấu trúc file JPEG 33
Trang 66
Chương 3.THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG 39
3.1 Giới thiệu chung về hệ thống 39
3.2 Đề xuất ý tưởng thiết kế khối tái tạo hình ảnh 43
Chương 4.ĐÁNH GIÁ KẾT QUẢ THỰC NGHIỆM 55
4.1 Mô phỏng khối giải mã hình ảnh 55
4.2 Mô phỏng khối tổng hợp hình ảnh 57
KẾT LUẬN 59
TÀI LIỆU THAM KHẢO 60
PHỤ LỤC 62
Trang 77
DANH SÁCH HÌNH VẼ, BẢNG BIỂU
Hình 1 Sơ đồ tổng quan hệ thống nén ảnh 9
Hình 1.6.4a Các bước thực hiện thuật toán Sigma-Delta ……….18
Hình 1.6.4b Dữ liệu khung hình vào [1] 19
Hình 1.6.4c Dữ liệu các khung hình đầu ra [1] 20
Hình 2.2 Sơ đồ quá trình mã hóa dựa trên biến đổi DCT [11] 23
Hình 2.3 So sánh hệ màu RGB và YCbCr 24
Hình 2.4 Các kiểu lấy mẫu dữ liệu 25
Hình 2.6 Các bảng lượng tử cho tín hiệu chói và tín hiệu màu theo chuẩn JPEG 27 Hình 2.7.1 Quét ZigZag [11] 27
Hình 2.7.3a Minh họa cho các phân nhóm AC [11] 29
Hình 2.7.3b Mình họa cho các phân nhóm DC [11] 29
Hình 2.7.3c Bảng mã Huffman tương ứng cho các nhóm [11] 30
Hình 2.8 Sơ đồ khối quá trình giải mã [11] 31
Hình 2.9 Tiêu đề cơ bản của file JPEG 34
Hình 2.9.2 Marker định nghĩa cho bảng lượng tử hóa 36
Hình 2.9.3a Các hệ số Huffman tương ứng với thành phần DC chói 37
Hình 2.9.3b Các hệ số Huffman tương ứng với thành phần DC màu 38
Hình 3.1 Sơ đồ khối hệ thống 40
Hình 3.1.1a Thiết kế khối phát hiện chuyển động (Motion Detection) [1] 40
Hình 3.1.1b Bảng mô tả lối vào ra của khối phát hiện chuyển động 41
Hình 3.1.1c Sơ đồ khối bên trong khối phát hiện chuyển động [1] 42
Hình 3.2 Sơ đồ khối tái tạo hình ảnh 44
Hình 3.2.1a Quá trình giải mã hình ảnh [11] 45
Trang 88
Hình 3.2.1b các giá trị marker: 45
Hình 3.2.1c Lưu đồ thuật toán giải mã một khung hình [11] 46
Hình 3.2.1d Lưu đồ thuật toán xử lý MCU [11] 47
Hình 3.2.1e Hệ số Huffman cho thành phần DC 48
Hình 3.2.1f Hệ số Huffman cho thành phần AC 49
Hình 3.2.1g Hệ số lượng tử hóa thành phần chói 50
Hình 3.2.1h Hệ số lượng tử hóa thành phần màu 50
Hình 3.2.1i Dữ liệu chói trước khi lượng tử hóa của một khối 8×8 50
Hình 3.2.1k Kết quả dữ liệu sau khi lượng tử hóa 50
Hình 3.2.1l Kết quả sau khi Dezigzag 51
Hình 3.2.1m Kết quả sau khi biến đổi IDCT 51
Hình 3.2.2a Sơ đồ khối chức năng khối Invert 52
Hình 3.2.2b Bảng Chức năng các chân tín hiệu của khối Invert 52
Hình 4.1 Ảnh gốc và sau khi mã hóa sang định dạng JPEG 56
Hình 4.2a Kết quả mô phỏng ở thời điểm xử lý khung hình thứ nhất 57
Hình 4.2b Kết quả xử lý ở khung hình thứ hai 58
Hình 4.2c Dữ liệu đầu vào It bằng không ở thời điểm xử lý khung hình thứ 2 58
Trang 99
GIỚI THIỆU
Ngày nay hệ thống camera giám sát hiện trường được sử dụng trong rất nhiều lĩnh vực khác nhau (an ninh, giao thông, ) Tuy nhiên vấn đề đặt ra đó là lượng dữ liệu video thu được từ camera nếu không được nén trước khi truyền đi sẽ không tiết kiệm được băng thông, lãng phí đường truyền Có rất nhiều kỹ thuật nén ảnh được
đề xuất trong những năm gần đây cho phép xây dựng các hệ thống nhận biết chuyển động với lượng thông tin tối thiểu trong khi vẫn đảm bảo được chất lượng đầu ra của hình ảnh Dựa vào thuật toán Sigma-Delta, hệ thống nén ảnh có thể xử
lý được chuỗi các hình ảnh liên tiếp, trên 25 hình trong một giây, hoàn toàn đáp ứng được yêu cầu thời gian thực của một hệ thống giám sát Bên thu nhận hình ảnh
sẽ nén tín hiệu trước khi truyền hoặc lưu trữ và bên hiển thị sẽ tái tạo lại các hình ảnh dựa trên việc phân tích sự sai khác trong các hình ảnh được mã hóa
Với yêu cầu đó, đề tài luận văn đã tập trung vào việc phát triển mô-đun tái tạo hình ảnh – một phần của hệ thống nén ảnh sử dụng thuật toán nhận biết chuyển động Sigma-Delta (Hình 1) được phát triển tại Phòng thí nghiệm mục tiêu Hệ thống tích hợp thông minh (SIS), trên cơ sở áp dụng công nghệ FPGA nhằm tích hợp và tối ưu phần cứng, phần mềm Nghiên cứu về các kỹ thuật nén ảnh và tái tạo hình ảnh sau khi nén, đặc biệt quan tâm tới thuật toán và kiến trúc nén ảnh Sigma-Delta Nghiên cứu về các kỹ thuật mã hóa dữ liệu hình ảnh, đưa ra đề xuất thiết kế xây dựng hệ thống tái tạo hình ảnh, tính toán và đưa ra các kết quả mô phỏng hệ thống
Hình 1 Sơ đồ tổng quan hệ thống nén ảnh
Trang 1010
Toàn bộ hệ thống nén ảnh bao gồm bên thu nhận hình ảnh và bên hiển thị hình ảnh được nhúng trên chip FPGA Bên thu nhận hình ảnh sử dụng một thiết bị camera để thu nhận hình ảnh sau đó truyền tín hiệu cho khối phát hiện chuyển động (Motion Detection), dữ liệu sau khi qua khối phát hiện chuyển động được mã hóa bởi khối mã hóa (Encode) sau đó truyền lên mạng Ethernet và gửi tới bên hiển thị hình ảnh Bên hiển thị hình ảnh gồm có mô-đun giải mã (Decode) và mô-đun tổng hợp hình ảnh (Invert) Dữ liệu nén nhận được bởi bên hiển thị hình ảnh sẽ được giải
mã bởi khối “Decode” Khối “Invert” có chức năng tổng hợp dữ liệu để hiển thị thành hình ảnh Mục tiêu của hệ thống là đáp ứng thời gian thực của một hệ thống giám sát, xử lý tối thiểu 25 hình trong một giây do đó thuật toán Sigma-Delta cần được thực hiện bằng phần cứng và tích hợp vào một hệ vi xử lý để có thể dễ dàng triển khai các ứng dụng trong thực tế
Để kiểm chứng hoạt động của toàn bộ hệ thống trong việc sử dụng thuật toán nhận biết chuyển động Sigma-Delta phục vụ cho việc tiến hành thiết kế phần cứng cho toàn bộ hệ thống sau này do đó khối giải mã dữ liệu “Decode” sẽ được xây dựng bằng phần mềm chạy trên hệ điều hành của vi xử lý Microblaze, một sản phẩm của hãng Xilinx và sử dụng chuẩn nén hình ảnh JPEG-một chuẩn nén ảnh hiệu quả được sử dụng trong hầu hết các thiết bị số ngày nay Như vậy mô-đun tái tạo hình ảnh sẽ là tích hợp của phần cứng và phần mềm trên chip FPGA Hệ thống sau khi được hoàn thiện sẽ được sử dụng để giám sát nhiều vị trí trong cùng một hệ thống (Tòa chung cư, khu công nghiệp, các làn đường giao thông ) Hệ thống có thể chạy độc lập mà không cần thông qua máy tính do đó có thể lắp đặt nhiều hệ thống giám sát ở nhiều nơi sau đó dữ liệu hình ảnh sẽ được gửi về trung tâm quan sát cho phép hiển thị các khung hình tại nơi cần giám sát mà không cần phải sử dụng nhiều máy tính cho mỗi một hệ thống thu nhận hình ảnh – hiển thị hình ảnh
Do đó hệ thống giám sát không những đơn giản và hiệu quả mà còn mang lại nhiều lợi ích về kinh tế
Do thời gian có hạn nên bản luận văn chưa thể xây dựng hoàn thiện hệ thống,
đề cập đầy đủ những vấn đề liên quan và chắc chắn không thể tránh khỏi những thiếu sót Em rất mong nhận được sự thông cảm và đóng góp ý kiến để em có thêm những kiến thức quý báu cho những công việc trong tương lai
Em xin chân thành cảm ơn
Trang 111.1 Khái niệm về bài toán phát hiện chuyển động
Ngày nay, hầu như tất cả các hệ thống giám sát đều tích hợp và sử dụng chức năng phát hiện chuyển động, nhằm tối ưu hóa hệ thống trong việc lưu trữ và truyền
dữ liệu Để đáp ứng nhu cầu ngày càng cao của hệ thống giám sát trong các lĩnh vực, thuật toán phát hiện chuyển động đã không ngừng được đổi mới và cải tiến
sao cho độ tin cậy ngày càng cao và tốc độ xử lý nhanh Thuật toán phát hiện
chuyển động giải quyết vấn đề phân vùng các đối tượng chuyển động và vùng còn lại từ các ảnh nền (Background và Foreground) và phải đảm bảo yêu cầu không quá nhạy cảm với môi trường hay sự thay đổi điều kiện từ cảnh tĩnh Ngoài ra hệ
thống là một mô-đun chạy độc lập nên không được tiêu thụ quá nhiều tài nguyên của hệ thống (năng lượng và diện tích mạch) Trong nhiều năm qua phương pháp trừ nền đã gây được sự chú ý, và gần đây đó là thuật toán ước lượng chuyển động Sigma-Delta Điểm mạnh của phương pháp này là tính toán tăng, giảm trên điểm ảnh bất kỳ bằng cách so sánh sai khác tuyệt đối của những khung hình liên tiếp Vì những ưu điểm của thuật toán hoàn toàn đáp ứng nhu cầu nên gần đây thuật toán này đã liên tục được cải tiến và ứng dụng mạnh mẽ trong các hệ thống giám sát Trong luận văn trình bày một trường hợp sử dụng thuật toán này trong việc xây dựng mô-đun tái tạo hình ảnh-một phần của hệ thống giám sát được phát triển tại Phòng thí nghiệm mục tiêu Hệ thống tích hợp thông minh (SIS) Trước khi đi vào nghiên cứu thuật toán này ta sẽ tìm hiểu một số phương pháp phát hiện chuyển động khác nhau
1.2 Phương pháp trừ nền
Phương pháp trừ nền là một phương pháp khá thông dụng trong việc phân vùng chuyển động, đặc biệt là trong trường hợp quan sát những khung hình cố định Phương pháp này sẽ phát hiện những vùng chuyển động trong một hình ảnh dựa
Trang 1212
vào việc so sánh sự sai khác giữa hình ảnh hiện tại với một hình nền trước đó căn
cứ vào từng điểm ảnh Phương pháp này khá đơn giản nhưng lại thể hiện một số bất lợi trong trường hợp cảnh có sự thay đổi về độ sáng hoặc một sự kiện không liên quan nào đó như nhiễu Do đó phương pháp này cần đảm bảo được thực hiện trên một nền tảng tốt để khắc phục những hạn chế của nó Nội dung phương pháp này như sau: xét một điểm ảnh có tọa độ I(x, y) trong khung hình It tại thời điểm t,
sẽ được coi là điểm ảnh nổi lên nếu nó thỏa mãn biểu thức sau:
I x y B x y
Trong đó là một tham số ngưỡng được định trước Ảnh nền Bt được cập nhật bằng cách sử dụng phương pháp lọc đệ quy theo phương trình sau:
tự động cập nhật các thông số thống kê của điểm ảnh thuộc nền đang được xử lý Các điểm ảnh nổi sẽ được xác định bằng cách so sánh thông số thống kê của mỗi điểm ảnh cùng với mô hình của thuật toán trừ nền Phương pháp này đã trở nên khá thông dụng trong những trường hợp khung cảnh có nhiễu hay cường độ sáng liên tục bị thay đổi
Với một hệ thống sử dụng phương pháp thống kê, mỗi điểm ảnh sẽ được biểu diễn bởi giá trị lớn nhất M và giá trị nhỏ nhất N và cường độ khác biệt tối đa D giữa bất kỳ các khung hình liên tiếp được quan sát trong suốt thời gian ban đầu mà
ở đó chưa có đối tượng nào chuyển động Một điểm ảnh It tại thời điểm t được xác định là điểm ảnh nổi nếu:
M x y I x D hoặc N( , )x y I x t( , y) D(x, y)
Trang 13để đánh giá về các điểm ảnh này
1.4 Phương pháp chênh lệch tạm thời
Phương pháp này dựa vào sự khác biệt giữa hai hoặc ba khung hình liên tiếp trong một chuỗi hình liên tiếp để trích suất ra các khu vực chuyển động Đặc điểm của phương pháp này là rất thích ứng với những mỗi trường có nhiều chuyển động Nhưng ngược lại nó lại có nhược điểm khi không thế đưa ra được tất cả các điểm ảnh liên quan đến đối tượng chuyển động
Có rất nhiều biến thể khác nhau của phương pháp này, đơn giản nhất là từ việc trích suất ra các khung hình video liên tiếp để xác định sai khác tuyệt đối Một chức năng sau đó được sử dụng để xác định ngưỡng của sự thay đổi Chức năng xác định ngưỡng này được thể hiện qua công thức:
Với In là cường độ của khung hình thứ n, In-1 là cường độ của khung hình trước
đó Như vậy vùng chuyển động Mn (u, v) sẽ được được xác định như trên Với u, v
là tọa độ của mỗi điểm ảnh Với ngưỡng T được xác định cụ thể từ trước tùy theo phạm vi độ sáng của hình ảnh được số hóa [1]
1.5 Phương pháp lưu lượng thị giác
Phương pháp này dựa trên đặc tính của những vec tơ lưu lượng của những đối tượng chuyển động từ đó xác định vùng chuyển động trong một chuỗi ảnh Phương pháp này có thể xác định đối tượng chuyển động trong một chuỗi video ngay cả đối với một camera chuyển động, tuy nhiên hầu hết những phương pháp lưu lượng hình ảnh đều có tính toán phức tạp và không thể sử dụng trong thời gian thực mà không cần một phần cứng chuyên dụng
Trang 1414
1.6 Các thuật toán xử lý trong phương pháp trừ nền
1.6.1 Thuật toán Frame Differencing
Trong các thuật toán của phương pháp trừ nền, thuật toán Frame Differencing được xem là đơn giản nhất, tốc độ tính toán nhanh nhưng kết quả đạt được của phương pháp này tương đối thấp
Thuật toán Frame Differencing [17] dựa trên việc phát hiện sai khác giữa hai khung hình liên tiếp với cùng một ngưỡng được xác định từ trước Bằng cách trừ hai khung hình liên tiếp và so sánh từng giá trị của kết quả tương ứng với mỗi điểm ảnh với một giá trị xác định trước gọi là ngưỡng Nếu giá nằm giá trị này nhỏ hơn ngưỡng thì tại đó được xem như là một điểm ảnh nền Ngược lại nó được xem là điểm ảnh chuyển động
Trang 1515
1.6.2 Thuật toán Running Average
Trong thuật toán Frame Differencing đề cập ở trên do việc phát hiện đối tượng chuyển động chỉ dựa vào sự sai khác ở hai khung hình liên tiếp nhau Do đó độ chính xác của thuật toán này tương đối thấp Để khắc phục nhược điểm đó thuật toán Running Average [18] đã xây dựng mô hình nền thông qua n khung hình liên tiếp Trong đó giá trị điểm ảnh tại tọa độ (x, y) của mô hình nền được tính bằng cách lấy trung bình cộng của tất cả các giá trị điểm ảnh tại vị trí (x, y) của n khung
đã học
1
( , ) ( , )
n i i
Trang 16Nhược điểm
- Tổn chi phí cho việc xây dựng mô hình nền
- Chỉ áp dụng đối với trường hợp khung nền tĩnh và chạy không tốt với những video có nền thay đổi liên tục
1.6.3 Thuật toán Running Gaussian Average
Phương pháp này được mô tả bởi Wren [15] [16] vào năm 1997 với ý tưởng là đặt một phần bố Gaussian lên sự biến thiên của mỗi điểm ảnh trong đoạn video Ví
dụ xét một dãy khung hình từ F1 đến Fn khi đó ta xét điểm ảnh ở vị trí (x, y) các giá trị F1(x, y), F2(x, y)…Fn(x, y) sẽ tạo thành một dãy các điểm ảnh biến thiên ứng với từng khung ảnh Sau đó tính giá trị trung bình và phương sai của dãy điểm này ta được giá trị điểm ảnh trung bình và ngưỡng (độ lệch nhân với một hệ số nào đó)
Những điêm ảnh nào có giá trị thỏa mãn:
F được xem là điểm ảnh nổi lên Có thể chọn k
Trang 1717
Thuật toán Sigma-Delta [7] là một thuật toán khá mới và được đánh giá là một trong những thuật toán nhanh và hiệu quả nhất trong các thuật toán của phương pháp trừ nền
Thuật toán được xây dựng dựa trên ý tưởng: Với It là giá trị điểm ảnh ở chuỗi đầu vào và Mt là giá trị ước lượng Sigma-Delta đầu tiên Ta định nghĩa một hàm sig như sau:
Với mỗi khung hình t
Với mỗi điểm ảnh x:
If Mt-1(x) < It(x) then Mt(x) <- Mt-1(x)+1
If Mt-1(x) < It(x) then Mt(x) <- Mt-1(x)+1 Otherwise Mt(x) <- Mt-1(x)
Bước 2 Với mỗi khung hình t
Với mỗi điểm ảnh x:
Ot(x)=|Mt(x)-It(x)|
Với mỗi điểm ảnh x:
Trang 1818
V0(x) = O0(x)
Với mỗi khung hình t
For each pixel x such that 0t(x) 0
If Vt-1 < N*Ot(x) then Vt(x) <- Vt-1(x) +1
If Vt-1 > N*Ot(x) then Vt(x) <- Vt-1(x) – 1 Otherwise Vt(x) <- Vt-1(x)
Vt(x) <- max (min(Vt(x), Vmax), Vmin)
Bước 4 Với mỗi khung hình t
If Ot(x) < Vt(x) then Êt(x) <-0 Else Êt(x) <- 1
Hình 1.6.4a Các bước thực hiện thuật toán Sigma-Delta Cũng theo [1] thuật toán Sigma-Delta được mô tả trong bảng 1.6.4 sẽ được thực hiện qua 4 bước như sau:
Bước 1: Ước lượng Mt (giá trị ước lượng Sigma – Delta đầu tiên) bằng cách so sách ước lượng Mt-1 của khung hình trước đó với giá trị điểm ảnh It của khung hình hiện tại, sau đó ước lượng Mt bằng cách tăng giảm Mt-1 Với khung hình đầu tiên ta
sẽ đặt giá trị khởi tạo với tất cả các điểm ảnh x trong khung hình là: Ước lượng
Mt(x) = It(x)
Tiếp theo, bước thứ 2 là: ta sẽ tính toán sai khác tuyệt đối giữa giá trị ước lượng
Mt và giá trị điểm ảnh của khung hình hiện tại It để cho ra sai khác tuyệt đối Ot Sau đó thực hiện bước thứ ba là: ước lượng Vt (giá trị ước lượng Sigma-Delta thứ hai: Thông số của sự phân tán (Dispersion)) cho ta biết hoạt động theo thời gian của điểm ảnh Tương tự như quá trình ước lượng Mt, ta sẽ so sánh ước lượng Vt-1
của khung hình trước đó với giá trị sai khác tuyệt đối Ot nhân với một hằng số N (N
là một yếu tố khuếch đại cho Vt có giá trị thường nằm trong khoảng từ 1 đến 4) Dựa vào kết quả so sánh mà ước lượng Vt bằng cách tăng giảm giá trị ước lượng
Vt-1 của khung hình trước tăng giảm 1 Ta có: Vmin và Vmax là hai thông số để
Trang 1919
điều khiển quá ngưỡng của Vt loại của giá trị này lần lượt là 2 và 2m-1 với m là số bit để biểu diễn Vt) Với khung hình đầu tiên ta sẽ đặt giá trị khởi tạo với tất cả các điểm ảnh x trong khung hình là Vt(x) = Ot(x)
Bước cuối cùng là tính toán nhãn chuyển động Êt để quyết định xem điểm ảnh là ảnh nổi (tương ứng với nhãn 1) hay ảnh nền (tương ứng với nhãn 0) bằng cách so sánh Ot và Vt
Kết quả thực thi với thuật toán Sigma-Delta
Hình 1.6.4b Dữ liệu khung hình vào [1]
Kết quả sau khi thực hiện thuật toán Sigma-Delta
Kết quả sau khi thực thi thuật toán Sigma-Delta là đã phát hiện chính xác đối tượng di chuyển trong các khung hình đầu vào và đó là các vùng đen được bao quanh như trên hình dưới đây
Trang 2020
Hình 1.6.4c Dữ liệu các khung hình đầu ra [1]
Theo [1] kết quả thực thi thuật toán đã phát hiện chính xác đối tượng chuyển động tuy nhiên còn xuất hiện khá nhiều nhiễu (một số điểm ảnh của nền tĩnh được coi là điểm ảnh nổi)
- Nhiễu khá lớn khi chưa được xử lý lọc
1.7 Lý do lựa chọn thuật toán Sigma-Delta [1]
Trong phương pháp trừ nền, một thuật toán nhanh và hiệu quả phải thỏa mãn một số điều kiện sau:
Trang 2121
Khung nền phải thích nghi theo thời gian vì: Hệ thống phải làm việc trong một thời gian dài khi không có chuyển động của con người và sau đó thay đổi dần dần hoặc đột ngột như cường độ chiếu sáng thay đổi hoặc có sự xuất hiện của đối tượng chuyển động
Hệ thống phải có khả năng loại trừ những chuyển động không thích hợp như chuyển động của mây, của các cây cối khi có gió thổi, chuyển động của dòng nước Đồng thời cũng loại bỏ những dao động nhỏ của camera
Hệ thống được làm việc trong thời gian thực nên cần công suất thấp, vây nên thuật toán không nên sử dụng quá nhiều tài nguyên tính toán đồng thời thỏa mãn về tốc độ tính toán và xử lý
Dễ dàng nhận thấy thuật toán Sigma-Delta có thể đáp ứng được cả ba điều kiện trên
Trang 2222
Chương 2 GIỚI THIỆU VỀ KỸ THUẬT NÉN ẢNH JPEG
Trong chương này sẽ giới thiệu chi tiết phương pháp mã hóa ảnh theo chuẩn JPEG bao gồm quá trình mã hóa và giải mã, ngoài ra cũng giới thiệu thêm về cấu trúc một file ảnh JPEG
2.1 Tổng quan
Chuẩn JPEG (Joint Photographic Experts Group) được công bố lần đầu vào 09/1992 dựa trên khuyến cáo ITU – T81, là một trong những phương pháp nén ảnh hiệu quả, có tỉ lệ nén tới vài chục lần được sử dụng hầu hết trong các thiết bị công nghệ như máy ảnh kỹ thuật số, camera Tuy nhiên ảnh sau khi giải nén sẽ không hoàn giống như ban đầu Mà chất lượng ảnh sẽ bị suy giảm sau khi giải nén Sự suy giảm này sẽ tỉ lệ thuận với hệ số nén Tuy nhiên sự mất mát thông tin này có thể chấp nhận được bằng việc loại bỏ đi những thông tin dư thừa dựa trên sự nghiên cứu về thị giác của con người
Trong không gian màu YUV, nhãn thị của con người rất nhạy cảm với thành phần Y và kém nhạy cảm với hai thành phần U và V Dựa trên đặc tính này của mắt con người phương pháp JPEG đã tách những thông tin dư thừa của ảnh và nén thông tin sao cho sự suy giảm tín hiệu thành phần Y là ít hơn so với hai thành phần còn lại là U và V
Công đoạn chính là chia nhỏ những bức ảnh thành nhiều vùng nhỏ (thông thường là 8×8 điểm ảnh) rồi sử dụng phép biến đổi cosin rời rạc để biến đổi những vùng này thành dạng ma trận có 64 hệ số thể hiện “thực trạng” của các điểm ảnh Điều quan trọng ở đây là hệ số đầu tiên có khả năng thể hiện “thực trạng” cao nhất, khả năng đó giảm nhanh với các hệ số khác Hay có thể nói lượng thông tin của 64 điểm ảnh tập trung chủ yếu ở một số hệ số ma trận trong phép biến đổi trên Trong giai đoạn này sẽ có sự mất mát thông tin bởi không có một phép biến đổi ngược chính xác, tuy nhiên lượng thông tin này chưa đáng kể so với các bước sau Ma trận có được sau phép biến đổi cosin rời rạc được lược bớt sự khác nhau giữa các
hệ số, đây chính là bước làm cho thông tin bị mất nhiều nhất vì những thay đổi nhỏ của các hệ số sẽ được làm tròn Các phép biến đổi trên áp dụng với thành phần U
và V nhiều hơn so với thành phần Y Bước tiếp theo là dùng một thuật toán mã hóa Huffman để phân tích dãy số Những phần tử nào được lặp lại nhiều sẽ được mã
Trang 232.2 Quá trình mã hóa
Hình 2.2
Hình 2.2 Sơ đồ quá trình mã hóa dựa trên biến đổi DCT [11]
Ảnh nguồn ban đầu được chia thành các khối có kích thước 8 8 điểm ảnh Mọi phép biến đổi của thuật toán sẽ được thực hiện trên khối cơ bản này Sau đây ta sẽ
đi mô tả chi tiết chức năng, vai trò trong mã hóa JPEG của từng khối trong sơ đồ trên
2.3 Chuyển đổi hệ màu
Trước khi chuyển đổi DCT, bộ mã hóa JPEG sẽ thực hiện biến đổi hệ màu từ RGB sang YCbCr Dữ liệu ảnh thường được đại diện bởi 3 thành phần màu chính
là R, G, B tương ứng ba màu cơ bản là đỏ, xanh lục, xanh dương Mỗi màu sẽ sử dụng 1byte để biểu diễn do đó mỗi điểm ảnh cần 3 byte để biểu diễn
Các nghiên cứu cho thấy mắt người nhạy cảm với sự thay đổi về độ chói và kém nhạy với những sự thay đổi về sắc độ Thông thường trong kỹ thuật nén ảnh sử dụng biến đổi DCT các điểm ảnh sẽ được chuyển đổi từ hệ màu RGB sang YCbCr Trong đó thành phần Y tương ứng với độ chói của điểm ảnh, hai thành phần Cb và
Cr lần lượt là sự sai khác về sắc độ của hai thành phần màu xanh dương và đỏ Công thức về sự biến đổi như sau:
Trang 24Ta có thể quan sát các thành phần R, G, B tương ứng với các thành phần Y, Cb,
Cr trong bức ảnh nổi tiếng “lena” trong hình ảnh minh họa (Hình 3.3)
Hình 2.3 So sánh hệ màu RGB và YCbCr
2.4 Lấy mẫu
Vì mắt người nhạy cảm với thành phần Y hơn nên việc ta giảm thành phần sắc
độ đi 50% so với thành phần độ chói Y cũng không làm giảm đi nhiều cảm nhận của mắt về sự thay đổi của hình ảnh Có nhiều phương pháp lấy mẫu khác nhau (Hình 5) điển hình là lấy mẫu theo tỉ lệ 4:2:0 Tức là độ phân giải của thành phần
Cb, Cr sẽ được giảm đi một nửa theo cả hai chiều dọc và chiều ngang Trong bước này ta sẽ giảm thành phần sắc độ, trong JPEG dựa trên biến đổi DCT thông thường
sử dụng cấu hình lấy mẫu là 4:2:0 có nghĩa cứ 4 điểm thành phần Y được chọn thì
sẽ có một điểm thành phần Cb, và một điểm thành phần Cr được lựa chọn như hình 3.4.a Bước này sẽ gây mất mát thông tin không cần thiết trong quá trình mã hóa hình ảnh Một vài cách lấy mẫu khác nhau như 4:2:2 có nghĩa là hai thành phần
Cb, Cr chỉ giảm đi một nữa theo chiều ngang
Trang 2525
Hình 2.4
Hình 2.4 Các kiểu lấy mẫu dữ liệu Dấu “×” thể hiện nơi điểm thành phần Y được chọn Dấu “o” chỉ nơi các thành phần sắc độ được chọn
2.5 Biến đổi DCT
Biến đổi DCT được Ahmed, Natarajan và Rao đề xuất sử dụng lần đầu tiên vào năm 1974 Biến đổi DCT cho phép chuyển đổi một khối dữ liệu 8×8 màu hoặc khối dữ liệu 8×8 chói dưới dạng biên độ thành khối dữ liệu 8×8 màu hoặc chói tương ứng dưới dạng tần số Mỗi hệ số sẽ được trừ đi giá trị 128 nếu mỗi điểm ảnh dùng 8 bit để biểu diễn và trừ đi 2048 nếu là 12 bit, để đưa giá trị này về giá trị nằm xung quanh điểm 0 Sau đó sẽ sử dụng công thức sau đây để thực hiện biến
Hầu hết các thông tin mà ta quan tâm đều chỉ nằm ở một vài thành phần có tần
số thấp vì mắt người không nhạy cảm với các thành phần có tần số cao Phép biến đổi DCT là trường hợp đặc biệt của phép biến đổi nổi tiếng DFT (Discrete Fourier Transform) Phép biến đổi này sẽ loại bỏ những thành phần có tần số cao Sau khi thực hiện xong các hệ số có giá trị lớn đều tập trung ở phía góc trái của ma trận Trong đó hệ số lớn hơn cả nằm ở góc trái trên cùng của khối, đây được gọi là hệ số
DC – tương ứng với thành phần có tần số bằng 0 63 hệ số còn lại được gọi là hệ số
AC Do đó hầu hết các thông tin mà chúng ta quan tâm đều nằm ở góc trái bên trên
Trang 2626
của ma trận Đây cũng chính là một trong những bước gây mất mát thông tin vì không có một phép biến đổi DCT ngược nào trả lại kết quả chính xác như ban đầu
2.6 Lượng tử hóa
Sau khi biến đổi DCT, mỗi hệ số trong 64 hệ số đầu ra của phép biến đổi DCT
sẽ được chia cho 64 hệ số tương ứng của bảng lượng tử hóa Sau khi lượng tử hóa một số thông tin không cần thiết đã bị loại bỏ đáng kể, do đó không có một phép biến đổi ngược nào cho ta kết quả như ban đầu Trong 64 hệ số sau phép biến đổi DCT, các hệ số tần số thấp chứa phần lớn thông tin tín hiệu do đó sẽ được lượng tử hóa với độ chính xác cao Ngược lại các hệ số ứng với tần số cao thường chứa ít thông tin hơn do đó chúng thường được loại bỏ bằng cách chia cho hệ số có trọng
số lớn Những hệ số có tần số cao thường là hệ số AC, những hệ số này thường sẽ bằng không sau khi lượng tử hóa
Trong hình 2.6, giá trị khối xác định cho phép các giá trị tín hiệu chói và tín hiệu màu được lượng tử hóa khác nhau
Trang 2828
2.7.2 Mã hóa RLC
Các giá trị lượng tử hóa có thể chỉ được biểu diễn nhờ các từ mã có độ dài cố định hay đồng đều, tức là các giá trị lượng tử hóa biểu diễn bằng cùng một số bit Tuy nhiên hiệu quả của việc mã hóa như vậy sẽ không cao Để cải thiện người ta dùng mã hóa Entropy, trong đó sử dụng những đặc tính thống kế của tín hiệu được
mã hóa Một tín hiệu, ở đây là giá trị điểm ảnh đã được chuyển hóa, nó chứa một lượng thông tin tùy theo xác suất của những giá trị hay sự kiện khác nhau xuất hiện Ví dụ từ mã nào ít xảy ra hơn sẽ có nhiều thông tin hơn từ mã ít hay xảy ra
Mã hóa entropy sẽ làm giảm độ dư thừa thống kê trong việc mã hóa các phần tử
để truyền, sự dư thừa chính là phần bố xác suất không đồng đều trên giá trị của mỗi phần tử Phân bố xác suất càng lệch khỏi phân bố đồng đều thì hiệu xuất của mã hóa entropy càng tăng Mã hóa Huffma là một trong những sơ đồ mã được sử dụng phổ biến Ngoài ra trong mã hóa entropy còn sử dụng mã hóa RLC sẽ cho hiệu xuất nén tương đối cao
Kỹ thuật mã hóa RLC mã hóa rất hiệu quả đối với các hệ số DCT đã được lượng
tử hóa sau quá trình quét zigzag ở trên Một hệ số khác không sau giá trị DC sẽ được mã hóa bằng 1 từ mã bao gồm hai thông số: số lượng 0 chạy trước 1 hệ số khác 0 và mức của nó sau khi đã lượng tử hóa RLC thực chất là quá trình thay thế các hệ số khác 0 bằng số lượng các chữ số 0 xuất hiện
2.7.3 Mã hóa độ dài thay đổi VLC
Các từ mã RLC tiếp tục được mã hóa bằng các từ mã ngắn cho mức xuất hiện cao và các từ mã dài cho mức xuất hiện thấp
Trang 2929
Hình 2.7.3a Minh họa cho các phân nhóm AC [11]
Hình 2.7.3b Mình họa cho các phân nhóm DC [11]
Hình 2.7.3c là một ví dụ về bảng mã Huffman tương ứng cho các nhóm Từ mã báo hiệu kết thúc là EOB khi tất các các hệ số trong khối còn lại mang giá trị 0
Trang 3030
Hình 2.7.3c Bảng mã Huffman tương ứng cho các nhóm [11]
Trang 3131
2.8 Quá trình giải nén
Hình 2.8 Sơ đồ khối quá trình giải mã [11]
Quá trình giải mã dựa trên cơ sở thực hiện thuật toán ngược của quá trình mã hóa Hình vẽ trên minh họa sơ đồ khối của quá trình giải mã JPEG Các thành phần của bộ giải mã cũng tương tự như các thành phần của bộ mã hóa nhưng được đặt theo thứ tự ngược lại
2.8.1 Giải mã entropy [4]
Các từ mã sau khi mã hóa entropy sẽ là các chuỗi bit nhị phân với độ dài khác nhau, các từ mã có tần suất xuất hiện lớn sẽ được mã hóa với chuỗi bit có độ dài ngắn hơn so với các từ mã có tần suất xuất hiện ít Thuật toán Huffman đóng vai trò quan trọng trong việc mã hóa và giải mã entropy
Trong khối 8×8 của dữ liệu đầu vào giải mã sẽ có hai loại hệ số:
Hệ số DC: Bộ mã hóa sẽ chỉ lưu lại sự sai khác của các hệ số DC ở các khối liên tiếp nhau Từ mã tương ứng là độ dài chuỗi bit được biểu diễn giá trị sai khác của
hệ số DC
Hệ số AC: Từ mã tương ứng là (zeros run, amptitude) Trong đó:
+ zeros run: Hệ số có giá trị bằng 0 nằm liên tiếp nhau
+ Amptitude: Số bit biểu diễn giá trị của hệ số khác 0 nằm ngay sau chuỗi hệ số 0 trên
+ Cặp từ mã trên được biểu diễn bởi 1 byte trong đó nibble thứ nhất biểu diễn
“zeros run” và nibble thứ hai biểu diễn “amptitude”; cả hai giá trị trên sẽ không có
Trang 322.8.3 Biến đổi IDCT
Quá trình biến đổi IDCT ngược cũng tương tự như quá trình DCT Trước khi thực hiện biến đổi DCT các khối sẽ được sắp xếp về thứ tự ban đầu như trước khi quét Zigzag ở phần mã hóa
Biến đổi IDCT sẽ được thực hiện theo công thức:
2.8.4 Chuyển đổi hệ màu
Chuyển đổi hệ màu được thực hiện theo công thức: