Các kiểu lấy mẫu dữ liệu

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) 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 (Trang 25)

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

đổi DCT. 7 7 0 0 1 2 1 2 1 ( , ) ( , ) os( ) os( ) ( ) 4 u vx y 16 16 x x F u v C C f x y c uc vDCT       1 ; , 0 , 2 1; , 0 u v u v C C u v        

Trong đó F(u,v) là các hệ số cho các thành phần u,v. và f(x,y) là giá trị của các điểm ảnh tại vị trí có tọa độ (x,y) ở dữ liệu đầu vào.

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

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.

( , ) ( , ) ( ) ( , ) q F u v F u v round Q u v

Trong đó F(u,v) là các giá trị sau khi biến đổi DCT, Q(u,v) là các giá trị của bảng lƣợng tử hóa, Fq(u,v) là giá trị thu đƣợc sau khi lƣợng tử hóa.

Ta dễ dàng thấy rằng trong quá trình lƣợng tử hóa một số lƣợng lớn thông tin không cần thiết sẽ bị mất. Trong công thức trên nếu nhƣ nhân các hệ số lƣợng tử hóa Q(u,v) với các hệ số Fq(u,v) thu đƣợc sau khi lƣợng tử hóa sẽ không đƣợc giá trị F(u,v) nhƣ ban đầu do có quá trình làm tròn. Do đó việc thực hiện biến đổi DCT ngƣợc sẽ hoàn toàn không thu đƣợc mẫu nhƣ ban đầu. Tuy nhiên nếu ta lựa chọn các hệ số lƣợng tử hóa thích hợp việc mất dữ liệu này không ảnh hƣởng nhiều đến cảm nhận của mắt ngƣời.

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.

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.

2.7 Mã hóa Entropy. 2.7.1 Quét zigzag 2.7.1 Quét zigzag

Hình 2.7.1 Quét ZigZag [11]

Trƣớc khi mã hóa Entropy các hệ số lƣợng tử hóa của Q(u,v) của khối 8×8 đƣợc quét zigzag (hình 2.7.1) để nhóm các thành phần có tần số tƣơng đƣơng lại, đồng thời việc quét zigzag cũng làm tăng tối đa chuỗi các giá trị 0 do vậy sẽ làm tăng hiệu quả khi nén dùng RLC.

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.

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.

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ó

giá trị lớn hơn 15. Do đó nếu có nhiều hơn 15 hệ số 0 liên tiếp nhau thì phải biểu diễn bằng nhiều cặp từ mã (15,0).

+ Nếu hệ số chƣa mã hóa của khối còn lại toàn bằng số 0 thì quá trình mã hóa sẽ kết thúc bằng từ mã EOS (0,0). Tƣơng tự với hệ số DC từ mã EOB cũng có giá trị là (0).

2.8.2 Giải lƣợng tử hóa

Quá trình giải lƣợng tử hóa trong ảnh thực chất là quá trình thực hiện thuật toán ngƣợc với quá trình lƣợng tử hóa. Đƣợc thực hiện theo công thức.

F‟q(u,v)=Fq(u,v)×Q(u,v) Trong đó:

F‟: Ma trận sau khi giải lƣợng tử. F : Ma trận trƣớc khi giải lƣợng tử. Q: Ma trận hệ số hóa lƣợng tử.

2.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:

7 7 0 0 1 (2 1) (2 1) ( , ) ( , ) * os os 4 u v u v 16 16 x u y v f x y C C F u v cc           Với 1 ; , 0 , 2 1; , 0 u v u v C C u v        

2.8.4 Chuyển đổi hệ màu

1, 402( 128) 0, 71414( 128) 0,34414( 128) 1, 772( 128) r r b b R Y C G Y C C B Y C           

2.9 Cấu trúc file JPEG

Trong phần này sẽ nói về định dạng header của file JPEG. Định dạng này rất quan trọng với nhiều lý do, nó cho phép ta định nghĩa loại ảnh, kích thƣớc ảnh, và nhiều thông tin quan trọng khác phục vụ cho quá trình giải mã ảnh chính xác. Định dạng này có nhiều section, mỗi section đƣợc bắt đầu với hai byte header với các hằng số tƣợng trƣng duy nhất để tránh sự nhầm lẫn. Cấu trúc file này sẽ cho phép quá trình quét. Hình dƣới đây miêu tả yêu cầu tối thiểu bộ các tiêu đề đƣợc sử dụng trong JPEG.

Trong header các đánh dấu (Markers) đƣợc sử dụng để phân loại các tiêu đề. Mỗi Marker đƣợc bắt đầu bởi một 1 byte 0xFF theo sau đó là một byte khác hai byte 0x00 và 0xFF. Byte đầu tiên đƣợc nhận biết duy nhất bởi bộ giải mã đóng vai trò là header marker. Để chắc chắn không xảy ra sự nhầm lẫn trong quá trình mã hóa thành các chuỗi bit, bất cứ khi nào có sự xuất hiện của byte 0xFF, luôn có một byte 0x00 đƣợc chèn vào ngay sau đó. Hình 2.9 thể hiện các tiêu đề cơ bản của JPEG.

Marker Symbol Description

0xFFD8 SOI Start of Image Marker

0xFFE0 APP0 Application Specific Marker 0xFFDB DQT Define Quantization Table

Marker

0xFFC0 SOF Start of Frame Marker

0xFFC4 DHT Define Huffman Table Marker 0xFFDA SOS Start of Scan Marker

0xFFD9 EOI End of Image Marker Hình 2.9. Tiêu đề cơ bản của file JPEG.

Một tập tin ảnh JPEG gồm 8 phần chính đƣợc sắp xếp theo thứ tự nhƣ sau: Một Marker SOI bắt đầu một ảnh

Một Marker APP0, theo sau là chuỗi các thông tin APP0 Marker DQT, theo sau đó là ma trận hệ số lƣợng tử hóa Một Marker SOF, theo sau là một số thuộc tính ảnh

Một hay nhiều Marker DHT theo sau là định nghĩa các bảng mã Huffman

Một Marker SOS đánh dấu cho việc quét dữ liệu, theo sau là chuỗi dữ liệu ảnh đƣợc mã hóa.

Một Marker đánh dấu cho việc kết thúc ảnh.

2.9.1 Frame Header segment (S0F) [4]

SOF dùng khi bắt đầu một khung. Các tham số trong phần này là duy nhất cho mỗi loại ảnh JPEG đƣợc thực thi. Segment này định nghĩa tất cả các tham số chứa trong một frame phục vụ cho quá trình scan.

Trƣờng Kích thƣớc Mô tả

Nhận dạng

Marker 2 byte

0xFF, 0xC0 dùng để chỉ định sự bắt đầu hoạt động của chế độ khung.

Độ dài dữ liệu 2 byte Định nghĩa chiều dài cho các khung tiêu đề

Độ chính xác

của dữ liệu 1 byte

Là số bit trên mỗi mẫu thƣờng có giá trị 8

Chiều cao của

ảnh 2 byte

Độ rộng của ảnh 2 byte

Số thành phần 1 byte 1= ảnh đen trăng, 3= hệ màu YCbCr hoặc YIQ, 4= hệ màu CMYK

Mỗi thành phần 3 byte

Chỉ số các thành phần tƣơng ứng (1=Y, 2= Cb, 3= Cr, 4= I, 5=Q) chiếm một 1 byte. Hệ số lấy mẫu (1 byte) (bit 0..3 chiều dài, bit 4..7 chiều ngang).

2.9.2 Define Quantization Table Header (DQT) [4]

Marker này sẽ định nghĩa bảng lƣợng tử hóa cho các thành phần độ chói và độ màu. Các thông tin này sẽ lần lƣợt đƣợc xuất hiện nhƣ trong hình 2.9.2

Trƣờng Kích thƣớc Mô tả Định danh cho Marker 2 byte 0xFF và 0xDB để xác định bảng lƣợng tử hóa Độ dài 2 byte

Cho biết độ dài tính theo byte của bảng hệ số lƣợng tử

Thuộc tính của bảng

1 byte

Các bit 0..3: chỉ số của bảng

Các bit 4..7: kích thƣớc của một hệ số (giá trị 0 tƣơng ứng với 8 bit, ngƣợc lại là 16 bit)

Các byte N byte N=64×kích thƣớc của hệ số Hình 2.9.2. Marker định nghĩa cho bảng lƣợng tử hóa

2.9.3 Define Huffman Table Header (DHT) [4]

Các thông tin của thành phần DHT đƣợc thể hiện nhƣ sau:

Trƣờng Kích thƣớc Mô tả

Định danh cho

Marker 2 byte

0xFF, 0xC4 dùng để xác định một DHT Marker.

Độ dài 2 byte Xác định độ dài của bảng mã Huffman. Thông tin về bảng mã

1 byte

Bit 0..3 xác định chỉ số của bảng mã.

Bit 4: kiểu bảng mã. 0= bảng DC, 1 = bảng AC.

Số ký hiệu 16 byte Số lƣợng tử hóa có độ dài từ 1 đến 16. Các ký hiệu

n byte Các từ mã tƣơng ứng với độ dài các bit biểu diễn tăng dần (n = tổng số từ mã).

Các hệ số Huffman đƣợc thể hiện nhƣ hình 2.9.3a.

Chƣơng 3

THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG

Chƣơng này sẽ trình bày kiến trúc toàn bộ hệ thống đồng thời mô hình hóa chi tiết các mô-đun chính trong hệ thống bằng các ngôn ngữ C++, VHDL.

3.1 Giới thiệu chung về hệ thống

Tín hiệu thu đƣợc từ camera sẽ đƣợc gửi tới khối phát hiện chuyển động để xác định các điểm ảnh chuyển động (sai khác) ở các khung hình liên tiếp so với khung hình đầu tiên đƣợc gọi là khung hình nền dựa vào thuật toán Sigma-Delta đã trình bày ở chƣơng trƣớc. Nhiệm vụ của khối phát hiện chuyển động là phân tích từng điểm ảnh dựa trên thuật toán Sigma-Delta từ đó sẽ phân chia khung hình thành hai loại đối tƣợng (chuyển động, nền). Trong khung hình sau khi xử lý bởi khối phát hiện chuyển động, điểm thành phần ảnh đƣợc xác định là chuyển động sẽ đƣợc giữ nguyên giá trị ứng với khung hình đó. Điểm thành phần ảnh nào của các khung hình đƣợc xác định là không chuyển động (điểm nền) sẽ đƣợc gán bằng không. Tín hiệu gửi tới khối mã hóa chính là khung hình thu đƣợc trực tiếp từ camera và các khung hình lấy từ khối phát hiện chuyển động. Khối mã hóa có chức năng mã hóa chuyển từ hệ màu RGB sang hệ màu YCbCr và mã hóa dữ liệu theo chuẩn JPEG sau đó gửi lên Ethernet. Bên nhận sẽ nhận dữ liệu từ Ethernet sau đó truyền tới khối giải mã (Jpeg Decode) để thực hiện giải mã tín hiệu rồi truyền tới khối tổng hợp hình ảnh (Invert). Tín hiệu sau khi qua khối Invert sẽ đƣợc gửi vào một bộ nhớ SDRAM trên hệ thống, sau đó khối VGA sẽ có chức năng đọc dữ liệu trên bộ nhớ để hiển thị lên thành hình ảnh.

Hình 3.1. Sơ đồ khối hệ thống.

3.1.1 Khối Motion Detection

Mô tả sơ bộ hoạt động của khối

Thiết kế của khối phát hiện chuyển động đƣợc mô tả nhƣ hình vẽ:

Hình 3.1.1a. Thiết kế khối phát hiện chuyển động (Motion Detection). [1] Camera

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.

Toàn bộ phần thiết kế khối phát hiện chuyển động dựa trên thuật toán Sigma- Delta sẽ đƣợc mô hình hóa bằng ngôn ngữ mô tả phần cứng VHDL.

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) 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 (Trang 25)

Tải bản đầy đủ (PDF)

(64 trang)