Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 15 trang
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
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 ĐẶ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ảithiệnảnhbằngbộlọcGauss " 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. 2 NỘI DUNG BÁO CÁO Phần I: Tìm hiểu về bộlocGauss 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 ảnhbằ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ọcGauss 3 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 Một 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 4 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à 5 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. 6 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. 7 Phần II: Khảo sát và xây dựng ứng dụng cảithiệnảnhbằngbộlọcGauss 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ảithiệ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ảithiệnảnhbằngbộlọcGauss (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 = _ 8 "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ảnhbằngbộlọcGauss 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 Dim MaxGaussianSize As Integer, GaussianSize As Integer 9 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) 10 [...]...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:... Pic7.Refresh Exit Sub ErrHandle: Exit Sub End Sub 13 IV Ví dụ về ảnh đã lọcbằng bộ lọcGauss Dưới đây là ví dụ về ảnh đưa qua bộ lọcGauss 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ọcGauss 14 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... 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... / 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 fScaleFactor = SF 11 Me.Cls ReDim Kernel(1,... 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 12 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... 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... 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 15 . 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 (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. 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ệ