Giáo trình Xử lý ảnh - Đỗ Năng Toàn

MỤC LỤC

LỜI NÓI ĐẦU .2

MỤC LỤC .4

Chương 1: TỔNG QUAN VỀ XỬ LÝ ẢNH.7

1.1. XỬ LÝ ẢNH, CÁC VẤN ĐỀ CƠ BẢN TRONG XỬ LÝ ẢNH .7

1.1.1. Xử lý ảnh là gì?.7

1.1.2. Các vấn đề cơ bản trong xử lý ảnh .7

1.1.2.1 Một số khái niệm cơ bản .7

1.1.2.2 Nắn chỉnh biến dạng.8

1.1.2.3 Khử nhiễu.9

1.1.2.4 Chỉnh mức xám: .9

1.1.2.5 Trích chọn đặc điểm .9

1.1.2.6 Nhận dạng. 10

1.1.2.7 Nén ảnh. 11

1.2. THU NHẬN VÀ BIỂU DIỄN ẢNH . 11

1.2.1. Thu nhận, các thiết bị thu nhận ảnh. 11

1.2.2. Biểu diễn ảnh . 12

1.2.2.1. Mô hình Raster. 12

1.2.2.2. Mô hình Vector. 13

Chương 2: CÁC KỸ THUẬT NÂNG CAO CHẤT LƯỢNG ẢNH. 14

2.1. CÁC KỸ THUẬT KHÔNG PHỤ THUỘC KHÔNG GIAN . 14

2.1.1. Giới thiệu. 14

2.1.2. Tăng giảm độ sáng . 14

2.1.3. Tách ngưỡng. 15

2.1.4. Bó cụm . 15

2.1.5. Cân bằng histogram . 16

2.1.6. Kỹ thuật tách ngưỡng tự động . 17

2.1.7. Biến đổi cấp xám tổng thể. 18

2.2. CÁC KỸ THUẬT PHỤ THUỘC KHÔNG GIAN . 20

2.2.1. Phép cuộn và mẫu . 205

2.2.2. Một số mẫu thông dụng. 21

2.2.3. Lọc trung vị . 22

2.2.4. Lọc trung bình . 24

2.2.5. Lọc trung bình theo k giá trị gần nhất. 25

2.3. CÁC PHÉP TOÁN HÌNH THÁI HỌC . 26

2.3.1. Các phép toán hình thái cơ bản. 26

2.3.2. Một số tính chất của phép toán hình thái. 27

Chương 3: BIÊN VÀ CÁC PHƯƠNG PHÁP PHÁT HIỆN BIÊN . 32

3.1. GIỚI THIỆU . 32

3.2. CÁC PHƯƠNG PHÁP PHÁT HIỆN BIÊN TRỰC TIẾP . 32

3.2.1. Kỹ thuật phát hiện biên Gradient. 32

3.2.1.1. Kỹ thuật Prewitt . 34

3.2.1.2. Kỹ thuật Sobel. 35

3.2.1.3. Kỹ thuật la bàn. 35

3.2.2. Kỹ thuật phát hiện biên Laplace. 36

3.3. PHÁT HIỆN BIÊN GIÁN TIẾP. 37

3.3.1 Một số khái niệm cơ bản. 37

3.3.2. Chu tuyến của một đối tượng ảnh. 38

3.3.3. Thuật toán dò biên tổng quát. 40

Chương 4: XƯƠNG VÀ CÁC KỸ THUẬT TÌM XƯƠNG . 44

4.1. GIỚI THIỆU . 44

4.2. TÌM XƯƠNG DỰA TRÊN LÀM MẢNH . 44

4.2.1. Sơ lược về thuật toán làm mảnh . 44

4.2.2. Một số thuật toán làm mảnh. 46

4.3. TÌM XƯƠNG KHÔNG DỰA TRÊN LÀM MẢNH. 46

4.3.1. Khái quát về lược đồ Voronoi. 47

4.3.2. Trục trung vị Voronoi rời rạc. 47

4.3.3. Xương Voronoi rời rạc . 48

4.3.4. Thuật toán tìm xương. 49

Chương 5: CÁC KỸ THUẬT HẬU XỬ LÝ. 52

5.1. RÚT GỌN SỐ LƯỢNG ĐIỂM BIỂU DIỄN. 52

5.1.1. Giới thiệu. 526

5.1.2. Thuật toán Douglas Peucker . 52

5.1.2.1. Ý tưởng . 52

5.1.2.2. Chương trình. 53

5.1.3. Thuật toán Band width . 54

5.1.3.1. Ý tưởng . 54

5.1.3.2. Chương trình. 56

5.1.4. Thuật toán Angles . 57

5.1.4.1. Ý tưởng . 57

5.1.4.2. Chương trình. 57

5.2. XẤP XỈ ĐA GIÁC BỞI CÁC HÌNH CƠ SỞ. 58

5.2.1 Xấp xỉ đa giác theo bất biến đồng dạng . 59

5.2.2 Xấp xỉ đa giác theo bất biến aphin . 62

5.3. BIẾN ĐỔI HOUGH. 63

5.3.1. Biến đổi Hongh cho đường thẳng. 63

5.3.2. Biến đổi Hough cho đường thẳng trong tọa độ cực . 64

5.3.2.1. Đường thẳng Hough trong tọa độ cực. 64

5.3.2.2. Áp dụng biến đổi Hough trong phát hiện góc nghiêng văn bản

. 65

PHỤ LỤC . 68

TÀI LIỆU THAM KHẢO . 76

pdf76 trang | Chia sẻ: hienduc166 | Lượt xem: 647 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Giáo trình Xử lý ảnh - Đỗ Năng Toàn, để xem tài liệu hoàn chỉnh bạn click vào nút TẢI VỀ ở trên
u: 0x80 Count. Byte thứ hai cho biết 
độ dài dãy các pixel không giống nhau không nén được. 
 69
• Loại 4: Dãy các Pixel giống nhau. 
Tuỳ theo các bít cao của byte đầu tiên được bật hay tắt. Nếu bít 
cao được bật (giá trị 1) thỡ đây là gói nén các byte chỉ gồm bít 0, số 
các byte được nén được tính bởi 7 bít thấp còn lại. Nếu bớt cao tắt 
(giỏ trị 0) thì đây là gói nén các byte gồm toán bít 1. Số các byte 
được nén được tính bởi 7 bít còn lại. 
Các gói tin của file IMG rất đa dạng do ảnh IMG là ảnh đen 
trắng, do vậy chỉ cần 1 bít cho 1 pixel thay vì 4 hoặc 8 như đã nói ở 
trên. Toàn bộ ảnh chỉ có những điểm sáng và tối tương ứng với giá 
trị 1 hoặc 0. Tỷ lệ nén của kiểu định dạng này là khá cao. 
2. Định dạng ảnh PCX 
Định dạng ảnh PCX là một trong những định dạng ảnh cổ điển. 
Nó sử dụng phương pháp mó hoỏ loạt dài RLE (Run – Length – 
Encoded) để nén dữ liệu ảnh. Quá trỡnh nộn và giải nộn được thực 
hiện trên từng dũng ảnh. Thực tế, phương pháp giải nén PCX kém 
hiệu quả hơn so với kiểu IMG. Tệp PCX gồm 3 phần: đầu tệp 
(header), dữ liệu ảnh (Image data) và bảng màu mở rộng. 
Header của tệp PCX có kích thước cố định gồm 128 byte và 
được phân bố như sau: 
• 1 byte: chỉ ra kiểu định dạng.Nếu là PCX/PCC thì nó luôn có 
giá trị là 0Ah. 
• 1 byte: chỉ ra version sử dụng để nén ảnh, có thể có các giá 
trị sau: 
+ 0: version 2.5. 
+ 2: version 2.8 với bảng màu. 
+ 3: version 2.8 hay 3.0 không có bảng màu. 
+ 5: version 3.0 cố bảng màu. 
• 1 byte: chỉ ra phương pháp mã hoá. Nếu là 0 thì mã hoá theo 
phương pháp BYTE PACKED, ngược lại là phương 
pháp RLE. 
• 1 byte: Số bít cho một điểm ảnh plane. 
• 1 word: toạ độ góc trái của ảnh. Với kiểu PCX nó có giá trị là 
(0,0), cũn PCC thì khác (0,0). 
• 1 word: toạ độ góc phải dưới. 
• 1 word: kích thước bề rộng và bề cao của ảnh. 
 70
• 1 word: số điểm ảnh. 
• 1 word: độ phân giải màn hình. 
• 1 word. 
• 48 byte: chia nó thành 16 nhóm, mỗi nhóm 3 byte. Mỗi nhóm 
này chứa thông tin về một thanh ghi màu. Như vậy ta có 16 
thanh ghi màu. 
• 1 byte: không dùng đến và luôn đặt là 0. 
• 1 byte: số bớt plane mà ảnh sử dụng. Với ảnh 16 màu, giá trị 
này là 4, với ảnh 256 mầu (1pixel/8bits) thì số bít plane lại 
là 1. 
• 1 byte: số bytes cho một dòng quét ảnh. 
• 1 word: kiểu bảng màu. 
• 58 byte: không dùng. 
Định dạng ảnh PCX thường được dùng để lưu trữ ảnh và thao 
tác đơn giản, cho phép nén và giải nén nhanh. Tuy nhiên, vì cấu trúc 
của nó cố định, nên trong một số trường hợp làm tăng kích thước lưu 
trữ. Cũng vì nhược điểm này mà một số ứng dụng sử dụng một kiểu 
định dạng khác mềm dẻo hơn: định dạng TIFF (Targed Image File 
Format) sẽ mô tả dưới đây. 
3. Định dạng ảnh TIFF 
Kiểu định dạng TIFF được thiết kế để làm nhẹ bớt các vấn đề 
liên quan đến việc mở rộng tệp ảnh cố định. Về cấu trúc, nó cũng 
gồm 3 phần chính: 
• Phần Header(IFH): cú trong tất cả cỏc tệp TIFF và gồm 
8 byte: 
+ 1 word: chỉ ra kiểu tạo tệp trên máy tính PC hay máy 
Macintosh. Hai loại này khác nhau rất lớn ở thứ tự các 
byte lưu trữ trong các số dài 2 hay 4 byte. Nếu trường 
này có giá trị là 4D4Dh thì đó là ảnh cho máy Macintosh, 
nếu là 4949h là của máy PC. 
+ 1 word: version. từ này luôn có giá trị là 42. đây là đặc 
trưng của file TIFF và không thay đổi. 
+ 2 word: giá trị Offset theo byte tính từ đầu tới cấu trúc 
IFD là cấu trúc thứ hai của file. Thứ tự các byte này phụ 
thuộc vào dấu hiệu trường đầu tiên. 
 71
• Phần thứ 2(IFD): Không ở ngay sau cấu trúc IFH mà vị trí 
được xác định bởi trường Offset trong đầu tệp. Có thể có một 
hay nhiều IFD cùng tồn tại trong một file. 
Một IFD bao gồm: 
+ 2 byte: chứa các DE ( Directory Entry). 
+ 12 byte là các DE xếp liên tiếp, mỗi DE chiếm 12 byte. 
+ 4 byte: chứa Offset trỏ tới IFD tiếp theo. Nếu đây là IFD 
cuối cùng thì trường này có giá trị 0. 
• Phần thứ 3: các DE: các DE có dộ dài cố định gồm 12 byte 
và chia làm 4 phần: 
+ 2 byte: chỉ ra dấu hiệu mà tệp ảnh đó được xây dựng. 
+ 2 byte: kiểu dữ liệu của tham số ảnh. Có 5 kiểu tham số 
cơ bản: 
1: BYTE (1 byte) 
2: ASCII (1 byte) 
3: SHORT (2 byte). 
4: LONG (4 byte) 
5: RATIONAL (8 byte) 
+ 4 byte: trường độ dài chưa số lượng chỉ mục của kiểu dữ 
liệu đó chỉ ra. Nó không phải là tổng số byte cần thiết để 
lưu trữ. Để có số liệu này ta cần nhân số chỉ mục với kiểu 
dữ liệu đã dùng. 
+ 4 byte: đó là Offset tới điểm bắt đầu dữ liệu liên quan tới 
dấu hiệu, tức là liên quan với DE không phải lưu trữ vật 
lý cùng với nó nằm ở một vị trí nào đó trong file. 
 Dữ liệu chứa trong tệp thường được tổ chức thành các nhóm 
dòng (cột) quét của dữ liệu ảnh. Cách tổ chức này làm giảm bộ nhớ 
cần thiết cho việc đọc tệp. Việc giải nén được thực hiện theo 4 kiểu 
khác nhau được lưu trữ trong byte dấu hiệu nén. 
 72
4. Định dạng file ảnh BITMAP 
Mỗi file BITMAP gồm đầu file chứa các thông tin chung về file, 
đầu thông tin chứa các thông tin về ảnh, một bảng màu và một mảng 
dữ liệu ảnh. Khuôn dạng được cho như sau: 
BITMAPFILEHEADER bmfh; 
BITMAPINFOHEADER bmih; 
RGBQUAD aColors[]; 
BYTE aBitmapBits[]; 
Trong đó, các cấu trúc được định nghĩa như sau: 
typedef struct tagBITMAPFILEHEADER { /* bmfh */ 
UINT bfType; 
DWORD bfSize; 
UINT bfReserved1; 
UINT bfReserved2; 
DWORD bfOffBits; 
} BITMAPFILEHEADER; 
typedef struct tagBITMAPINFOHEADER { /* bmih */ 
DWORD biSize; 
LONG biWidth; 
LONG biHeight; 
WORD biPlanes; 
WORD biBitCount; 
DWORD biCompression; 
DWORD biSizeImage; 
LONG biXPelsPerMeter; 
LONG biYPelsPerMeter; 
DWORD biClrUsed; 
DWORD biClrImportant; 
} BITMAPINFOHEADER, *LPBITMAPINFOHEADER; 
với 
biSize kích thước của BITMAPINFOHEADER 
biWidth Chiều rộng của ảnh, tính bằng số điểm ảnh 
biHeight Chiều cao của ảnh, tính bằng số điểm ảnh 
 73
biPlanes Số plane của thiết bị, phải bằng 1 
biBitCount Số bit cho một điểm ảnh 
biCompression Kiểu nén 
biSizeImage Kích thước của ảnh tính bằng byte 
biXPelsPerMeter độ phân giải ngang của thiết bị, tính bằng điểm ảnh trên met 
biYPelsPerMeter độ phân giải dọc của thiết bị, tính bằng điểm ảnh trên met 
biClrUsed Số lượng các màu thực sự được sử dụng 
biClrImportant Số lượng các màu cần thiết cho việc hiển thị, bằng 0 nếu tất cả các màu đều cần để hiển thị 
Nếu bmih.biBitCount > 8 thì mảng màu rgbq[] trống, ngược lại thì 
mảng màu có 2<< bmih.biBitCount phần tử. 
typedef struct tagRGBQUAD { /* rgbq */ 
BYTE rgbBlue; 
BYTE rgbGreen; 
BYTE rgbRed; 
BYTE rgbReserved; 
} RGBQUAD; 
Ta cũng có: 
typedef struct tagBITMAPINFO { 
BITMAPINFOHEADER bmiHeader; 
RGBQUAD bmiColors[1]; 
} BITMAPINFO, *PBITMAPINFO; 
 74
Phụ lục 2: 
CÁC BƯỚC THAO TÁC VỚI FILE AVI 
AVI là chuẩn video thường được tích hợp trong các thư viện của 
các môi trường lập trình. Để xử lý video, cần có các thao tác cơ bản 
để chuyển về xử lý ảnh các khung hình (các frames). 
1. Bước 1: Mở và đóng thư viện 
Trước mọi thao tác với file AVI, chúng ta phải mở thư viện: 
 AVIFileInit( ) 
Hàm này không cần tham số, có nhiệm vụ khởi động thư viện 
cung cấp các hàm thao tác với file AVI. (Đó là thư viện vfw32.lib, 
được khai báo trong file vfw.h). 
Sau tất cả các thao tác bạn phải nhớ đóng thư viện đã mở lúc 
đầu, chỉ bằng lệnh: 
AVIFileExit( ) 
Nếu thiếu bất cứ hàm nào, dù là mở hay đóng thư viện thì trình 
biên dịch đều sẽ thông báo lỗi. 
2. Bước 2: Mở và đóng file AVI để thao tác: 
Sau khi mở thư viện, bạn phải mở file AVI bạn định thao tác: 
AVIFileOpen(PAVIFILE* ppfile, LPCSTR fname, UINT mode, 
CLSID pclsidHandler) 
Thực chất, hàm này tạo ra một vùng đệm chứa con trỏ trỏ đến 
file có tên là fname cần mở. Và ppfile là con trỏ trỏ đến vùng bộ đệm 
đó. Tham số mode quy định kiểu mở file; chẳng hạn OF_CREATE 
để tạo mới, OF_READ để đọc, OF_WRITE để ghi . Tham số cuối 
dùng 
là NULL. 
Trước khi đóng thư viện, bạn phải đóng file AVI đã mở, bằng 
cách dùng hàm: 
AVIFileRelease(PAVIFILE pfile) 
Trong đó, pfile là con trỏ trỏ đến file cần đóng. 
 75
3. Bước 3: 
Mở dòng dữ liệu hình ảnh hay âm thanh trong file AVI đã mở ra 
để thao tác: 
AVIFileGetStream(PAVIFILE pfile, PAVISTREAM * ppavi, 
DWORD fccType, LONG lParam) 
Trong đó, pfile là con trỏ đến file đã mở; ppavi trỏ đến dòng dữ 
liệu kết quả; fccType là loại dòng dữ liệu chọn để mở, là 
streamtypeAUDIO nếu là tiếng và streamtypeVIDEO nếu là hình, 
lParam đếm số loại dòng được mở, là 0 nếu chỉ thao tác với một loại 
dòng dữ liệu. 
Sau các thao tác với dòng dữ liệu này, bạn nhớ phải đóng nó lại: 
AVIStreamRelease(PAVITREAM pavi). 
4. Bước 4: Trường hợp thao tác với dữ liệu hình của phim 
Chuẩn bị cho thao tác với khung hình (frames): 
AVIStreamGetFrameOpen(PAVISTREAM pavi, 
LPBITMAPINFOHEADER lpbiWanted) 
Trong đó pavi trỏ đến dòng dữ liệu đã mở, lpbiWanted là con 
trỏ trỏ đến cấu trúc mong muốn của hình ảnh, ta dùng NULL để sử 
dụng cấu trúc mặc định. 
Hàm này trả về đối tượng có kiểu PGETFRAME để dùng cho 
bước 5. 
Sau khi thao tác với các frame rồi, phải gọi hàm : 
AVIStreamGetFrameClose(PGETFRAME pget) 
5. Bước 5: Thao tác với frame 
Dùng hàm 
AVIStreamGetFrame(PGETFRAME pget, LONG lpos) 
Hàm này trả về con trỏ trỏ đến dữ liệu của frame thứ lpos. Dữ 
liệu đó có kiểu là DIB đã định khối. 
Thực hiện các thao tác mong muốn. 
 76
TÀI LIỆU THAM KHẢO 
[1]. Lương Mạnh Bá, Nguyễn Thanh Thủy (2002), Nhập Môn Xử lý ảnh 
số, Nxb Khoa học và Kỹ thuật, 2002. 
[2]. Anil K.Jain (1989), Fundamental of Digital Image Processing. 
Prentice Hall, Engwood cliffs. 
[3]. J.R.Paker (1997), Algorithms for Image processing and Computer 
Vision. John Wiley & Sons, Inc. 
[4]. Randy Crane (1997), A simplified approach to image processing, 
Prentice-Hall, Inc. 
[5]. John C.Russ (1995), The Image Procesing Handbook. CRC Press, Inc. 
[6]. Adrian Low (1991), Introductory Computer Vision and Image 
Processing, Copyright (c) 1991 by McGrow Hill Book Company 
(UK) Limited. 
[7]. T. Pavlidis (1982), Algorithms for Graphics and Image Processing, 
Computer Science Press. 

File đính kèm:

  • pdfXử lý ảnh.pdf