Tải bản đầy đủ (.ppt) (17 trang)

Kỹ thuật lọc thông thấp trong xử lý ảnh

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (594.4 KB, 17 trang )

BÁO CÁO ĐỀ TÀI
MÔN XỬ LÝ ẢNH SỐ
Đề tài: Khử nhiễu ảnh sử dụng kỹ
thuật lọc thông thấp
(low pass filtering)
NHÓM 3:
1.Hồ Chí Sĩ
2.Huỳnh Quốc Sư
3.Lê Thị Thúy An
4.Vương Nữ Vi Linh
1
Khử nhiễu ảnh

Khử nhiễu là một bước trong việc cải tiến,
nâng cao chất lượng ảnh.

Kỹ thuật này giảm bớt tác động của nhiễu và
có thể làm mờ các đường biên.

Có nhiều loại nhiễu  có nhiều bộ lọc thích
hợp.
2
Khử nhiễu ảnh với Photoshop
3
Quy trình thực hiện
1. Nạp ảnh vào chương trình.
2. Đọc dữ liệu ảnh ra ma trận.
3. Xử lý ma trận dữ liệu.
4. Ghi dữ liệu đã xử lý vào ảnh mới.
4
Nạp ảnh vào chương trình.



Tạo đối tượng chứa file ảnh để xử lý.

Trong Java hỗ trợ đối tượng BufferedImage
(trong thư viện java.awt.image).

Khai báo:
File f = new File(<tên file ảnh>);
BufferedImage anh = ImageIO.read(f);
5
Đọc dữ liệu ảnh ra ma trận.

Lớp BufferedImage gồm có lớp ColorModel
và lớp Raster.

Lớp Raster chứa đựng thông tin về vị trí của
các pixel trong một ô chữ nhật của ảnh và các
thao tác trên dữ liệu ảnh.

Lớp ColorModel hỗ trợ các thao tác liên quan
đến xử lý từng Pixel. Để đơn giản, đối với ảnh
trắng đen, ta thay thế bằng lớp Pixel.
6
Đọc dữ liệu ảnh ra ma trận
class Pixel
{
public Pixel(int r, int g, int b)
{ red = r; green = g; blue = b; }
public int getRed() { return red; }
public int getGreen() { return green; }

public int getBlue() { return blue; }
}
7
Đọc dữ liệu ảnh ra ma trận

Khai báo Raster:
Raster dulieu = BufferedImage.getRaster();

Đọc dữ liệu vào ma trận sử dụng lớp Raster:

phương thức getPixel(Width, Height,int []);

lưu ý: khi đọc dữ liệu ra ma trận, cách xác định
chỉ số của pt getPixel() ngược với cách xác định
chỉ số của mảng 2 chiều.
8
Red Green
Blue
Pixel
Width

getPixel(Width, Height, int[]);

setPixel(Width, Height, int[]);
Column
Matran[Row][Column];
9
Ảnh Dữ liệu ảnh
Xử lý ma trận dữ liệu.


Dùng phép biến đổi Fourier:

Biến đổi DFT.

Nhân kết quả với bộ lọc.

Biến đổi ngược (Invert DFT)
f(x,y) F(u,v)
G(u,v)
g(x,y)
DFT
F(u,v)*T(u,v)
Invert
DFT
10
Xử lý ma trận dữ liệu

Biến đổi DFT: dùng công thức
∑∑

=

=
+−=
1
0
1
0
)](2exp[*),(
1

),(
M
x
N
y
N
vy
M
ux
iyxf
MN
vuF
π
11
Xử lý ma trận dữ liệu

Nhân kết quả với bộ lọc:
F(u,v) * T(u,v)
o
Trong đó: T(u,v) là bộ lọc:
o
Lọc thông thấp lý tưởng:
T(u,v) = 1 nếu D(u,v) <= D0
T(u,v) = 0 nếu D(u,v) >D0
o
Lọc Butterworth:

T(u,v) =
o
Lọc Gaussian:

T(u,v ) =
n
D
vuD
2
0
),(
1
1






+
)*2/(),(
2
0
2
DvuD
e

12
Xử lý ma trận dữ liệu
o
Trong đó: D(u,v) là khoảng cách từ (u,v)
đến tâm được tính theo công thức:
o
D(u,v) =

o
D0 và n là hằng số dương cho trước.
22
vu
+
13
Xử lý ma trận dữ liệu

Biến đổi ngược (Invert DFT): dùng công thức
∑∑

=

=
+=
1
0
1
0
)](2exp[*),(),(
M
u
N
v
N
vy
M
ux
ivuFyxf
π

14
Ghi dữ liệu đã xử lý vào ảnh mới.

Trong BufferedImage có lớp WritetableRaster
có các thao tác dùng để ghi dữ liệu vào ma trận
dữ liệu của ảnh.

Khởi tạo:
WritableRaster wr =BufferedImage.getRaster();

Phương thức:
setPixel (width, height, int[]);
15
Lưu ảnh đã xử lý vào file mới
ImageIO.write (<BufferedImage Object>,
<formatName>, <file output>);

BufferedImage Object: đối tượng chứa ảnh đã
xử lý.

formatName: tên định dạng của ảnh mới, có
các định dạng là GIF, JPG, BMP, PNG.

file output: file ảnh mới.
16
Tạo giao diện

Tạo đối tượng lấy tệp từ hệ thống.

Java hỗ trợ lớp JFileChooser (trong thư viện

javax.swing)

Sử dụng thư viện java.awt, javax.swing,
java.awt.event để tạo các thành phần trong
giao diện, đưa các sự kiện vào các thành phần
và chạy chế độ đồ họa.
17

×