XỬ LÝ ẢNH SỐ

Download Report

Transcript XỬ LÝ ẢNH SỐ

XỬ LÝ ẢNH SỐ
• Là một môn khoa học còn mới mẻ,
bao gồm các vấn đề cơ bản:
–Hệ Thống xử lý ảnh
–Các vấn đề cơ bản trong xử lý ảnh
Hệ Thống Xử Lý Ảnh
•
•
•
•
Thu Nhận Ảnh
Phân Tích Ảnh
Xử Lý Ảnh
Lưu Trữ Ảnh
Thu Nhận Ảnh
• Thu Nhận qua Camera dưới dạng các tín hiệu
tương tự hoặc số hóa.
• Thu nhận từ vệ tính qua các sensor, ảnh,
trang được scan
• Gồm các bước:
– Số hóa (digitalizer)
– Lấy mẫu
– Số hóa bằng lượng hóa
Thu Nhận Ảnh
• Biểu diễn màu, gồm 3 thuộc tính chủ yếu
trong cảm nhận màu:
– Độ chói (Brightness)
– Sắc thái màu (Hue)
– Độ bão hòa (Saturation)
Thu Nhận Ảnh
• Tổng hợp màu và sánh màu: theo lý thuyết
3 màu của Thomas các màu được tổng hợp
từ 3 màu cơ bản: đỏ, lục, lơ.
• Có thể tổng hợp màu bằng :
– Màu X = x1 đỏ + x2 xanh + x3 lơ
x1 , x2 , x3 là các hệ số tổng hợp
Thu Nhận Ảnh
• Các phương pháp biểu diễn ảnh:
– Mã loạt dài
– Mã xích
– Mã tứ phân
Thu Nhận Ảnh
• Các định dạng ảnh cơ bản trong xử lí
ảnh
– Ảnh IMG
– Ảnh PCX
– Ảnh TIFF
– Ảnh GIF
Ảnh IMG
• Là ảnh đen trắng.
• Header gồm 16 bytes:
– 6 bytes đầu đánh dấu định dạng IMG:
0x0001 0x0008 0x0001
– 2 bytes tiếp theo chứa độ dài mẫu tin
– 4 bytes mô tả kích cỡ pixel
– 2 bytes số pixel trên một dòng ảnh
– 2 bytes số dòng ảnh trong ảnh
Ảnh IMG
• Ảnh được nén thành từng dòng, mỗi
dòng gồm các gói, các dòng giống nhau
cũng được nén thành một gói, gồm 4
loại gói:
– Gói các dòng giống nhau
– Gói các dãy giống nhau
– Dãy các pixel không giống nhau, không lặp
lại và không nén được
– Dãy các pixel giống nhau
Ảnh PCX
• Sử dụng phương pháp mã loạt dài RLE
(Run Length Encoded).
• File PCX gồm 3 phần: header, image data,
bảng màu mở rộng
Ảnh PCX
• Header: gồm 128 bytes
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
1 byte: kiểu định dạng
1 byte: Version sử dụng nén ảnh
1 byte: phương pháp mã hóa
1 byte: số bit cho một điểm ảnh plane
1 word: tọa độ góc trái trên
1 word: tọa độ góc phải dưới
1 word: kích thước bề rộng và bề cao ảnh
1 word: số điểm ảnh
1 word: độ phân giải màn hình
48 bytes: chia 16 nhóm mỗi nhóm chưa thông tin thanh ghi
màu
1 byte: giá trị luôn là 0
1 byte: số bit plane ảnh sử dụng
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 TIFF
• Gồm 3 phần chính: Header (IFH), IFD, DE (bảng
màu mở rộng)
• IFH (Image File Header):
– 1 word: kiểu tạo tệp trên máy tính PC hay
Macintosh. ( 4D4DH – Macintosh, 4949H –
PC)
– 1 word: version (giá trị là 42)
– 2 word: giá trị Offset theo byte từ đầu file
đến IFD
Ảnh TIFF
• IFD (Image File Directory): có thể có 1 hay
nhiều IFD cùng tồn tại trong file
– 2 bytes: chứa các DE (Directory Entry).
– 12 bytes: các DE xếp liên tiếp
– 4 bytes: Offset tới IFD tiếp theo
Ảnh TIFF
• DE – Directory Entry (bảng màu mở rộng): gồm
12 byte, chia làm 4 phần:
– 2 byte: dấu hiệu mà file được xây dựng
– 2 byte: kiểu dữ liệu tham số ảnh
•
•
•
•
•
BYTE (1 byte)
ASCII (1 byte)
SHORT (2 byte)
LONG (4 byte)
RATIONAL (8 byte)
– 4 byte: số lượng index của kiểu dữ liệu
– 4 byte: ogffset tới điểm bắt đầu dữ liệu liên quan tới
DE
Ảnh GIF
• Sử dụng thuật toán nén LZW (Lempel-Ziv-Welch) dựa
vào sự lặp lại của nhóm điểm, tăng ưu thế khi số màu
tăng lên so với các kiểu ảnh khác.
• Định dạng:
–
–
–
–
–
–
–
–
–
GIF Note
GIF Header
Global Palette
Header Image
Palette of Image 1
Data of Image 1
‘,’ ký tự liên kết
…………………….
‘;’ GIF terminator
Ảnh GIF
• GIF note: có giá trị GIF87a, 3 kí tự đầu: kiểu
định dạng, 3 kí tự sau: version
• GIF Header: mô tả thông số toàn bộ ảnh
– Độ rộng hình rasier theo pixel 2 byte
– Độ cao hình rasier theo pixel 2 byte
– Các thông tin về bản đồ màu, hình hiển thị,…
– Thông tin màu nèn 1 byte
– Phần chưa dùng 1 byte
Ảnh GIF
• Global Palette:
Bit
Thứ tự byte
Mô tả
Red
1
Giá trị màu đỏ theo index 0
Green
2
Giá trị màu xanh lục theo index 0
Blue
3
Giá trị màu xanh lơ theo index 0
Red
4
Giá trị màu đỏ theo index 1
Green
5
Giá trị màu xanh lục theo index 1
Blue
6
Giá trị màu xanh lơ theo index 1
…………..
…………………
…………………………………………………...
Ảnh GIF
• Header of Image:
Các Bit
Thứ tự byte
Mô tả
00101100
1
Kí tự liên kết ảnh (*)
Căn trái ảnh
2,3
Pixel bắt đầu ảnh tính từ trái hình hiển thị
Căn đỉnh trên
4,5
Pixel cuối ảnh bắt đầu tính từ đỉn trên hình hiển thị
Độ rộng ảnh
6,7
Chiều rộng ảnh tính theo Pixel
Độ cao ảnh
8,9
Chiều cao ảnh tính theo Pixel
MI000pixel
10
Khi bit M = 0: sử dụng bản đồ màu tổng thể
M = 1: sử dụng bản đồ màu cục bộ
I = 1: định dạng ảnh theo thứ tự liên tục
I = 1: định dạng ảnh theo thứ tự xen kẽ
pixel + 1: số bit/pixel của ảnh này
Ảnh GIF
• Palette of Image 1
• Data of Image 1: chuỗi các giá trị có thứ tự của
các pixel màu tạo nên ảnh
• GIF terminator: cung cấp tính đồng bộ cho
đầu cuối của ảnh GIF
Tích chập
• Khái niệm bất biến trượt: một hệ thống gọi là bất
biến trượt nếu dịch chuyển đầu vào thì cũng tạo
nên một dịch chuyển tương ứng của đầu ra.
• Tích chập có tính chất liên quan đến biến đổi
Fourier: biến đổi Fourier của một tích chập bằng
tích đơn giản các biến đổi Fourier của các tín hiệu
đó.
– F[H(x,y) X I(x,y)] = F[H(x,y)] . F[I(x,y)]
• Trong kỹ thuật người ta gọi H là nhân chập, nhân
cuộn hay mặt nạ
Tích chập
• Hàm tính nhân chập với thuật toán dùng trong moi trường hợp
cần tính tích chập, viết bằng C:
void Nhanchap(){
int sum=0;
int Lc=(w+1)/2;
int col;
int row;
for(int i=1;i<=N;i++)
for(int j=1;j<=N;j++){
sum=0;
for(int k=1;k<=w;k++)
for(int l=1;l<=w;l++){
col=i-k+Lc;
row=j-l+Lc;
if(col!=0 && col<=N)
if(row!=0 && row<=N)
sum+=imageIn[col][row]*H[k][l];
}
imageOut[i][j]=sum;
}
}
Xử Lý và Nâng Cao Chất Lượng Ảnh
• Các kỹ thuật tăng cường ảnh
• Khôi phục ảnh
Các kỹ thuật tăng cường ảnh
•
•
•
•
•
•
•
•
Điều khiển mức xám
Giãn độ tương phả
Giảm nhiễu
Làm trơn ảnh
Nội suy
Phóng đâij
Nổi biên
……………………
Lọc
• Làm trơn nhiễu bằng lọc tuyến tính, lọc trung bình và
lọc dải thông thấp.
• Tùy loại nhiễu mà ta áp dụng bộ lọc thích hợp
• Lọc trung bình có trọng số chính là thực hiện chập
ảnh đầu vào với nhân chập H:
1 1 1
H = ⅟9 1 1 1
1 1 1
Lọc
• Lọc thông thấp:
1 b 1
H = 1/(b + 2)2 b b2 b
1 b 1
Lọc đồng hình (Homomorphic filter):
…………………………………………..
Ứng dụng cơ bản một số hàm Java
trong việc xử lí ảnh
• Sử dụng class BufferedImage trong java, class
cung cấp việc quản lí ảnh trong bộ nhớ, các
phương thức lưu trữ, xử lí, và nhận pixel.
• Một bufferedImage có một ColorModel và một
Raster dữ liệu ảnh.
– ColorModel biểu thị màu biểu diễn của các pixel
– Raster thực thi các chức năng:
•
•
•
•
Thể hiện ảnh
Bảo trì ảnh trong bộ nhớ
Hỗ trợ tạo nhiều ảnh con từ một bộ đệm dữ liệu ảnh đơn
Cung cấp các phương thức truy cập các pixel ảnh
Đọc ảnh
• Để load một ảnh từ file ảnh ta sử dụng code:
BufferedImage img = null;
try {
img = ImageIO.read(new File(“imageSource"));
} catch (IOException e) { }
imageSource là đường dẫn đến file ảnh cần đọc
Khi đó class BufferedImage sẽ nhận định dạng ảnh nhờ phần mở rộng
hoặc các thông số đặc trưng của ảnh và tiến hành giải nén theo định dạng
ảnh.
Xử lí ảnh cơ bản
• Sử dụng các option của BufferedImage class:
– LookupOp:
– ConvolveOp: sử dụng convolution kernel làm
không gian tính toán output pixel bằng cách nhân
input pixel với kernel, kernel là các ma trận.
– RescalesOp: thực hiện thay đổi tỉ lệ trên từng pixel
ảnh nguồn bằng cách nhân pixel với giá trị mẫu
bởi một nhân tố tỉ lệ rồi cộng với offset.
– …………………………….