1. Trang chủ
  2. » Công Nghệ Thông Tin

cải thiện ảnh bằng bộ lọc gauss

15 3,4K 29

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 15
Dung lượng 816,5 KB

Nội dung

Hiểu ảnh đầu vào để có những mô tả về ảnh ở mức cao hơn, sâu hơn ví dụ từ ảnh một tai nạn giao thông phác họa hiện trường tai nạn Trong Công nghệ thông tin xử lý ảnh đặc biệt cần thiết v

Trang 1

TRƯỜNG ĐẠI HỌC MỎ ĐỊA CHẤT

KHOA CÔNG NGHỆ THÔNG TIN

-o0o -Bài tập lớn môn học

XỬ LÝ ẢNH

Giảng viên hướng dẫn: Trần Mai Hương

Người thực hiện: 1 Dương Thị Thảo

2 Trần Xuân Đức

3 Nguyễn Đẩu Hoàng

Lớp: Tin học Trắc Địa K55

12/2011

Trang 2

ĐẶT VẤN ĐỀ

Xử lý ảnh đang là một lĩnh vực đươc quan tâm và đã trở thành một phần rất quan trọng ,liên quan đến nhiều ngành khác như : hệ thống tin học , lý thuyết thông tin , lý thuyết thống kê , trí tuệ nhân tạo , nhận dạng Đây là một môn khoa học tương đối mới mẻ so với nhiều ngành khoa học khác Nó gồm nhiều quá trình liên tục Đầu tiên là thu nhận ảnh từ camera , vệ tinh hay các bộ cảm ứng ,…Tín hiệu lấy vào sẽ được số hóa thành tín hiệu số và chuyển sang giai đoạn xử lý , phân tích hay lưu trữ lại

Mục tiêu của xử lý ảnh có thể chia theo 3 hướng:

1 Xử lý ảnh ban đầu để có được ảnh mới theo yêu cầu xác định (ví dụ ảnh mờ cần xử lý để ảnh được rõ hơn)

2 Phân tích ảnh để thu được thông tin đặc trưng giúp cho việc phân loại nhận biết ảnh (ví dụ phân tích vân tay để trích chọn các đặc trưng vân tay)

3 Hiểu ảnh đầu vào để có những mô tả về ảnh ở mức cao hơn, sâu hơn (ví

dụ từ ảnh một tai nạn giao thông phác họa hiện trường tai nạn)

Trong Công nghệ thông tin xử lý ảnh đặc biệt cần thiết và nó phù hợp với tất cả mọi ứng dụng Vì vậy, việc có một phần mềm xử lý ảnh chuyên biệt và có thể sử dụng như một module gắn vào các ứng dụng là hết sức cần thiết

Trong quá trình học , chúng em đặc biệt hứng thú với các phương pháp lọc số để

xử lý ảnh Chính vì vậy nhóm em đã chọn đề tài : " Cải thiện ảnh bằng bộ lọc Gauss "

Với khoảng thời gian không nhiều nhưng với sự nỗ lực của bản thân và

sự hướng dẫn tận tình của cô giáo, chúng em đã hoàn thành bài tập Tuy nhiên

do thời gian còn hạn chế nên phạm vi nghiên cứu và chương trình còn nhiều vấn

đề chưa giải quyết được triệt để Em mong được sự chỉ bảo của cô để em hoàn thành tốt hơn bài tập của mình

Em xin chân thành cám ơn cô giáoTrần Mai Hương đã tận tình giảng dạy

và giúp đỡ em hoàn thành bài tập này

Trang 3

NỘI DUNG BÁO CÁO Phần I: Tìm hiểu về bộ loc Gauss

Chương I: Giới thiệu tổng quan về hàm Gauss

1 Khái niệm

Gaussian Blur là cách làm mờ một ảnh bằng hàm Gaussian Phương pháp này được ứng dụng một cách rộng rãi và hiệu quả trong các phần mềm xử lý đồ họa

Nó cũng là công cụ phổ biến để thực hiện quá trình tiền xử lý (preprocessing) hình ảnh dùng làm dữ liệu đầu vào tốt cho các phân tích cao cấp hơn như trong Computer Vision, hoặc cho các giải thuật được thực hiện trong một tỉ lệ khác của hình được cho Nó có thể giúp làm giảm nhiễu (Noise) và mức độ chi tiết (không mong muốn) của hình ảnh

Một cách trực quan, đây được xem như là phương pháp làm mờ mịn cũng giống như hiệu ứng hình ảnh được đặt dưới một lớp màn trong suốt bị mờ Nó không giống với trường hợp hình ảnh bị mờ do hậu quả của ống kính bị mất tiêu điểm (out of focus) hay do bóng của đối tượng dưới ánh sáng thường

Trong toán học, việc ứng dụng Gaussian Blur cho một hình cũng chính là tính tích chập (Convolution) hình đó với hàm Gaussian Vì biến đổi Fourier của một Gaussian sẽ tạo ra một Gaussian khác cho nên nếu xét trên miền tần số thì phương pháp này sẽ làm giãm các thành phần có tần số cao trong hình Hay nói cách khác Gaussian Blur là một bộ lọc tần số cao (low pass filter : chỉ giữ lại các thành phần tần số thấp)

2 Ví dụ

Dưới đây là một ví dụ về hình ảnh sau khi đưa qua bộ lọc Gauss

Trang 4

Hình gốc

Hình bị Blur

Như vậy phát biểu một cách thực hành hơn Gaussian blurr là một loại bộ lọc làm mờ ảnh, sử dụng lý thuyết hàm Gaussian (cũng được biết đến như là dạng phân tán chuẩn (Normal Distribution) trong thống kê) để tính toán việc chuyển đổi (Transformation) mỗi Pixel của hình

3 Phương trình hàm Gaussian dùng trong không gian một chiều và hai

chiều

Hai chiều

Trong đó x và y là tọa độ theo hai trục đứng và ngang còn σ là phương sai chuẩn của phân tán Gaussian hay là giá trị quyết định độ lệch giữa các điểm trên

Trang 5

bề mặt Gaussian Trong không gian hai chiều, công thức này sản sinh ra những đường viền là những đường tròn đồng tâm, tuân theo logic phân tán Gaussian từ điểm trung tâm Giá trị từ hệ thống phân tán này sẽ được sử dụng để xây dựng một ma trận tích chập (Convolution) dùng tính tóan phép tích chập

(Convolution) với hình ảnh gốc

Giá trị mới của mỗi Pixel sau khi tính tích chập với kernel đại diện cho hàm Gaussian có thể coi là trung bình lượng giá của các pixel xung quanh nó Ta thấy rằng giá trị lượng giá của phần tử trung tâm kernel tương ứng với pixel đang xét là lớn nhất, giá trị này sẽ nhỏ hơn đối với các phần tử tương ứng với những pixel kế cận một cách đối xứng và tỉ lệ thuận với khoảng cách của phần

tử này với trung tâm Tính chất này giúp giữ lại đường viền và biên cũng như làm mờ một cách đồng bộ hơn so với các phương pháp khác

Trong lý thuyết, hàm Gaussian tại mỗi điểm trên hình là khác 0 Điều này

có nghĩa là Gaussian Kernel nên có kích thước bằng với hình ảnh và giá trị tại mỗi phần tử luôn khác 0 Tuy nhiên trong thực hành, do việc tính tóan dựa trên xấp xỉ rời rạc (Discrete Approximation) cho nên giá trị của các phần tử trên bề mặt Gaussian ở khỏang cách lớn hơn 3σ so với trung tâm gần như không đáng

kể (tiệm cận 0) Do vậy các phân tán Gaussian ngòai bán kính này sẽ bị bỏ qua,

đó cũng là lý do mà thông thường Gaussian kernel có kích thước giới hạn 3, 5, 7 (Cái này còn tùy vào giá trị phương sai chuẩn mà bạn chọn) Khoảng cách giữa hai điểm gần nhau trong Gaussian Kernel là σ

Do đặc tính có cấu trúc như những hình tròn đối xứng, với hình hai chiều, Gaussian blur có thể được áp dụng như là hai phép tính toán một chiều độc lập (Độc lập tuyến tính - Linearly Separable) Có nghĩa là hiệu quả thu được từ tính toán trên ma trận hai chiều có thể tương đương với cách ứng dụng tính toán một loạt các Gaussian 1 chiều theo hướng ngang và đứng Điều này rất hữu ích trong việc giảm chi phí tính toán thể hiện khá rỏ trong hai công thức tương ứng sau: Và

Trang 6

Một vấn đề cần được quan tâm nữa của Gaussian blur là nếu bạn sử dụng lần lượt nhiều Gaussian cho một ảnh thì kết quả cũng tương đương với khi bạn dùng một Gaussian lớn hơn có bán kính bằng căn bậc hai tổng bình phương các bán kính của các Gaussian đã dùng, ví dụ: Cũng vì mối quan hệ này

mà thời gian tính toán sẽ không thể được tiết kiệm khi bạn chia nhỏ các

Gaussian Do đó khuyến cáo nên sử dụng Gaussian đơn trong tính toán nếu có thể

Ngoài ra Gaussian blur cũng được sử dụng để giảm kích thước của hình ảnh Khi tiến hành xử lý giảm tỉ lệ lấy mẩu tín hiệu cho ảnh (Downsampling) người ta thường áp dụng bộ lọc tần số cao (Low pass filter) trước khi tái lấy mẫu Điều này là để chắc chắn những thông tin không mong muốn, tần số cao sẽ không xuất hiện trong hình đã được Downsampling (loại bỏ răng cưa

Aliasing)

Với những gì đã trình bày ở trên, chúng ta cũng đã nhắc tới bề mặt, ma trận Gaussian, đó chính là hiện thực hóa của hàm Gaussian trong thực hành Hàm Gaussian được áp dụng vào ảnh thông qua phép Convolution giữa ma trận

Gaussian và ma trận điểm ảnh 2 chiều Dưới đây là một ví dụ của ma trận

Gaussian được tạo ra bằng công thức Gaussian ở trên với σ = 0.84089642 và sau

đó chuẩn hóa lại Lưu ý quan sát và so sánh với các đặc tính nêu trên nhằm làm

rỏ thêm các vấn đề đã được trình bày

Trang 7

Chương II: Tính chất

Hàm Gauss phát sinh từ việc gán hàm mũ phức vào một hàm bậc hai thông thường Do đó hàm Gauss có logarit là một hàm bậc hai

Đường cong Gauss chuẩn hóa với giá trị kỳ vọng μ và phương sai σ2

Những tham số tương ứng là a = 1/(σ√(2π)), b = μ, c = σ

Biểu đồ của một hàm Gauss là một đường cong đối xứng đặc trưng "hình quả chuông" Đường cong này rớt xuống rất nhanh khi tiến tới cộng/trừ vô cùng

Tham số a là chiều cao tối đa đường cong, b là vị trí tâm của đỉnh và c quyết

định chiều rộng của "chuông"

Hàm Gauss được sử dụng rộng rãi Trong thống kê chúng miêu tả phân bố chuẩn, trong xử lý tín hiệu chúng giúp định nghĩa bộ lọc Gauss, trong xử lý hình ảnh hàm Gauss hai chiều được dùng để tạo hiệu ứng mờ Gauss, và trong toán học chúng được dùng để giải phương trình nhiệt và phương trình khuyếch tánvà định nghĩa phép biến đổi Weierstrass

Trang 8

Phần II: Khảo sát và xây dựng ứng dụng cải thiện ảnh bằng bộ lọc Gauss

I Chức năng của chương trình

Xuất phát từ ý tưởng xây dựng một chương trình xử lý ảnh Chương trình này chỉ là bước khởi đầu cho một sự tích hợp tất cả các ứng dụng xử lý ảnh vào trong một chương trình, đây sẽ là một trong những chương trình giúp người sử dụng hiểu rõ hơn về phép cải thiện ảnh trong xử lý ảnh

Trong khuôn khổ của một bài tập thực hành, ở đây chúng em xin được trình bày phép cải thiện ảnh bằng bộ lọc Gauss (chương trình được viết bằng ngôn ngữ VB)

Dưới đây là giao diện chính của chương trình:

II Load ảnh và lưu ảnh sau khi xử lý:

Load ảnh: Đây là chức năng đầu tiên của chương trình cho phép load một

ảnh bitmap 256 mầu để xử lý

Thủ tục load ảnh lên from giao diện người dùng

Private Sub mmsave_Click()

On Error Resume Next

CM.Filter = _

Trang 9

"Bitmap|*.bmp;|JPEG|*.jpg;*.jpeg;|GIF|*.gif;"

CM.ShowSave

FileName = CM.FileName

SavePicture Pic7.Image, FileName

End Sub

Lưu ảnh: Là chức năng cho phép lưu trữ ảnh sau khi xử lý

Thủ tục lưu ảnh

Private Sub mnuload_Click()

Dim Token As Long

CM.Filter = "Image|*.bmp;*.jpg"

CM.ShowOpen

If CM.FileName <> "" Then

Token = InitGDIPlus

Pic1.Picture = LoadPictureGDIPlus(CM.FileName, Pic1.Width, Pic1.Height, , False)

FreeGDIPlus Token

End If

Text1.Text = ""

End Sub

III Lọc ảnh bằng bộ lọc Gauss

Thủ tục lọc ảnh

Private Sub mnugaussian_Click()

On Error GoTo ErrHandle

Const MaxData = 255

Const DataGranularity = 1

Const Delta = DataGranularity / (2 * MaxData)

Dim X As Integer, Y As Integer

Dim fBias As Integer, fScaleFactor As Single

Dim fRadius As Single, Sum As Single, RR2 As Single

Trang 10

Dim GaussianKernel() As Double, Kernel() As Single

Dim KernelSize As Long

Dim fKernel As Long, fWidth As Long, fHeight As Long, fCount As Long Dim SF As Single, Rad As Single, W As Single, C As Single

Dim KWH As Long, KWL As Long, KHH As Long, KHL As Long

MaxGaussianSize = 50

fBias = 0: fScaleFactor = 1: fCount = 1

fRadius = InputBox("Chon Muc Do Loc voi gia tri nam trong khoang[0.5 - 2] :

", "nhap gia tri")

If fRadius < 0 Then fRadius = 0

If fRadius > 10 Then MsgBox "Chon Muc Do Loc voi gia tri nam trong

khoang[0.5 - 2]", vbInformation, "Angka Kelebihan": Exit Sub

ReDim GaussianKernel(-MaxGaussianSize To MaxGaussianSize,

-MaxGaussianSize To MaxGaussianSize)

Sum = 0

RR2 = -2 * fRadius * fRadius

For Y = -MaxGaussianSize To MaxGaussianSize

For X = -MaxGaussianSize To MaxGaussianSize

GaussianKernel(Y, X) = Exp((X * X + Y * Y) / RR2)

Sum = Sum + GaussianKernel(Y, X)

Next X

Next Y

For Y = -MaxGaussianSize To MaxGaussianSize

For X = -MaxGaussianSize To MaxGaussianSize

GaussianKernel(Y, X) = GaussianKernel(Y, X) / Sum

Next X

Next Y

Sum = 0

GaussianSize = MaxGaussianSize

Do While (GaussianSize > 1) And (Sum < Delta)

Trang 11

Sum = Sum + 4 * GaussianKernel(0, GaussianSize)

GaussianSize = GaussianSize - 1

Loop

For Y = -GaussianSize To GaussianSize

For X = -GaussianSize To GaussianSize

Sum = Sum + GaussianKernel(Y, X)

Next X

Next Y

For Y = -GaussianSize To GaussianSize

For X = -GaussianSize To GaussianSize

GaussianKernel(Y, X) = GaussianKernel(Y, X) / Sum

Next X

Next Y

KernelSize = (2 * GaussianSize) + 1

SF = 0: Rad = 1

Dim RKernel(99999) As Single, cnt As Integer

cnt = 0

For Y = -GaussianSize To GaussianSize

C = 0

For X = -GaussianSize To GaussianSize

W = Round((1 / GaussianKernel(GaussianSize, GaussianSize)) *

GaussianKernel(Y, X))

RKernel(cnt) = W

SF = SF + W

C = C + 1

cnt = cnt + 1

Next X

Rad = Rad + 1

Next Y

Trang 12

ReDim Kernel(1, Rad, C)

cnt = 0

Dim tmps As String

Text1.Text = Text1.Text & vbCrLf

Text1.Text = Text1.Text + "Ma Tran loc" & vbCrLf

Text1.SelStart = Len(Text1.Text)

ReDim Kernel(0 To 1, -GaussianSize To GaussianSize, -GaussianSize To

GaussianSize)

For I = -GaussianSize To GaussianSize

For J = -GaussianSize To GaussianSize

Kernel(1, I, J) = RKernel(cnt)

tmps = tmps & Format(Kernel(1, I, J), "000") & " "

cnt = cnt + 1

Next J

Text1.Text = Text1.Text + tmps & vbCrLf

tmps = ""

Next I

Text1.Text = Text1.Text + "nhap gia tri =" & fRadius & " kich thuoc ma tran la

" & KernelSize & " x " & KernelSize & " " & vbCrLf

Text1.SelStart = Len(Text1.Text)

Pic7.Cls

Dim tmpIntR As Double, tmpIntG As Double, tmpIntB As Double

Dim CTotal As Single

Dim CDataR As Single, CDataG As Single, CDataB As Single

CTotal = (((GaussianSize * GaussianSize) + GaussianSize) * 4) + 1

Dim tmpC As Long

Dim CountClr As Long

Trang 13

For Y = 0 To Pic1.Height - 1

For X = 0 To Pic1.Width

For J = -GaussianSize To GaussianSize

For I = -GaussianSize To GaussianSize

PixelValue = GetPixel(Pic1.hdc, X + I, Y + J)

DecTORGB PixelValue, R, G, B

CDataR = CDataR + (Kernel(1, J, I) * R)

CDataG = CDataG + (Kernel(1, J, I) * G)

CDataB = CDataB + (Kernel(1, J, I) * B)

If mX < C Then mX = mX + 1

Next I

Next J

CDataR = CDataR / (fScaleFactor + fBias)

CDataG = CDataG / (fScaleFactor + fBias)

CDataB = CDataB / (fScaleFactor + fBias)

SetPixel Pic7.hdc, X, Y, RGB(CDataR, CDataG, CDataB)

Pic7.Refresh

DoEvents

Next X

Pic7.Refresh

Next Y

Pic7.Refresh

Exit Sub

ErrHandle:

Exit Sub

End Sub

Trang 14

IV Ví dụ về ảnh đã lọc bằng bộ lọc Gauss

Dưới đây là ví dụ về ảnh đưa qua bộ lọc Gauss với những thông số khác

nhau cho một ảnh gốc

Hình gốc

Hình sau khi đưa qua bộ lọc Gauss

Trang 15

Phần III: Kết luận

Trong phần mà chúng em đã trình bày ở trên thì, một bước quan trọng khi phát triển một hệ xử lý ảnh trong một môi trường ứng dụng thực tế là xác định được mục tiêu tổng quát thật rõ ràng Thứ hai là xác định những hạn chế do môi trường ứng dụng đặt ra Thứ ba là thu lượm thông tin về ảnh cần xử lý

Khi đã cho mục tiêu tổng thể, các điều hạn chế và thông tin về lớp ảnh cần phải xử lý thì sẽ có nhiều phương pháp khác nhau để giải được bài toán

Chúng em hy vọng rằng qua phần chúng em đã trình bày ở trên, độc giả

có thể đọc thêm nhiều tài liệu về các chuyên mục, và các ứng dụng nghiên cứu

lý thuyết vào những vấn đề thực tiễn, cũng như về các tiến bộ mới trong nghiên cứu và triển khai thuộc lĩnh vực này

Cuối cùng chúng em xin chân thành cảm ơn cô đã hướng dẫn chúng em hoàn thành bài tập lớn này

Phần V: Tư liệu tham khảo

1 Nhập môn xử lý ảnh………Nguyễn Thanh Thủy

2 Giáo trình xử lý ảnh……….ĐH Bách Khoa

3 http://planet-source-code.com

- HẾT

Ngày đăng: 20/04/2014, 08:58

HÌNH ẢNH LIÊN QUAN

Hình gốc - cải thiện ảnh bằng bộ lọc gauss
Hình g ốc (Trang 4)
Hình bị Blur - cải thiện ảnh bằng bộ lọc gauss
Hình b ị Blur (Trang 4)

TỪ KHÓA LIÊN QUAN

w