Cải Thiện ảnh Bằng Bộ Lọc Gauss - Tài Liệu Text - 123doc
Có thể bạn quan tâm
- Trang chủ >>
- Công Nghệ Thông Tin >>
- Cơ sở dữ liệu
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 (468.21 KB, 15 trang )
TRƯỜNG ĐẠI HỌC MỎ ĐỊA CHẤTKHOA CÔNG NGHỆ THÔNG TIN o0o Bài tập lớn môn họcXỬ LÝ ẢNH Giảng viên hướng dẫn: Trần Mai HươngNgườ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 K5512/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ầnrất quan trọng ,liên quan đến nhiều ngành khác như : hệ thống tin học , lý thuyếtthông tin , lý thuyết thống kê , trí tuệ nhân tạo , nhận dạng . Đây là một mônkhoa học tương đối mới mẻ so với nhiều ngành khoa học khác . Nó gồm nhiềuquá 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ạinhậ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ớitấ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ạyvà giúp đỡ em hoàn thành bài tập này.2NỘI DUNG BÁO CÁOPhần I: Tìm hiểu về bộ loc GaussChương I: Giới thiệu tổng quan về hàm Gauss1. Khái niệmGaussian 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ácthà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 Gauss3Hình gốcHì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ọclàm mờ ảnh, sử dụng lý thuyết hàm Gaussian (cũng được biết đến như là dạngphâ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à haichiều Một chiềuHai 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ên4bề 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 trongviệ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.6Chươ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.7Phần II: Khảo sát và xây dựng ứng dụng cải thiện ảnh bằng bộ lọc GaussI. 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ùngPrivate Sub mmsave_Click()On Error Resume NextCM.Filter = _8 "Bitmap|*.bmp;|JPEG|*.jpg;*.jpeg;|GIF|*.gif;"CM.ShowSaveFileName = CM.FileNameSavePicture Pic7.Image, FileNameEnd SubLưu ảnh: Là chức năng cho phép lưu trữ ảnh sau khi xử lýThủ tục lưu ảnhPrivate Sub mnuload_Click()Dim Token As LongCM.Filter = "Image|*.bmp;*.jpg"CM.ShowOpenIf CM.FileName <> "" ThenToken = InitGDIPlusPic1.Picture = LoadPictureGDIPlus(CM.FileName, Pic1.Width, Pic1.Height, , False)FreeGDIPlus TokenEnd IfText1.Text = ""End SubIII. Lọc ảnh bằng bộ lọc GaussThủ tục lọc ảnhPrivate Sub mnugaussian_Click()On Error GoTo ErrHandleConst MaxData = 255Const DataGranularity = 1Const Delta = DataGranularity / (2 * MaxData)Dim X As Integer, Y As IntegerDim fBias As Integer, fScaleFactor As SingleDim fRadius As Single, Sum As Single, RR2 As SingleDim MaxGaussianSize As Integer, GaussianSize As Integer9Dim GaussianKernel() As Double, Kernel() As SingleDim KernelSize As LongDim fKernel As Long, fWidth As Long, fHeight As Long, fCount As LongDim SF As Single, Rad As Single, W As Single, C As SingleDim KWH As Long, KWL As Long, KHH As Long, KHL As LongMaxGaussianSize = 50fBias = 0: fScaleFactor = 1: fCount = 1fRadius = InputBox("Chon Muc Do Loc voi gia tri nam trong khoang[0.5 - 2] : ", "nhap gia tri")If fRadius < 0 Then fRadius = 0If fRadius > 10 Then MsgBox "Chon Muc Do Loc voi gia tri nam trong khoang[0.5 - 2]", vbInformation, "Angka Kelebihan": Exit SubReDim GaussianKernel(-MaxGaussianSize To MaxGaussianSize, -MaxGaussianSize To MaxGaussianSize)Sum = 0RR2 = -2 * fRadius * fRadiusFor Y = -MaxGaussianSize To MaxGaussianSize For X = -MaxGaussianSize To MaxGaussianSize GaussianKernel(Y, X) = Exp((X * X + Y * Y) / RR2) Sum = Sum + GaussianKernel(Y, X) Next XNext YFor Y = -MaxGaussianSize To MaxGaussianSize For X = -MaxGaussianSize To MaxGaussianSize GaussianKernel(Y, X) = GaussianKernel(Y, X) / Sum Next XNext YSum = 0GaussianSize = MaxGaussianSizeDo While (GaussianSize > 1) And (Sum < Delta)10 Sum = Sum + 4 * GaussianKernel(0, GaussianSize) GaussianSize = GaussianSize - 1LoopFor Y = -GaussianSize To GaussianSize For X = -GaussianSize To GaussianSize Sum = Sum + GaussianKernel(Y, X) Next XNext YFor Y = -GaussianSize To GaussianSize For X = -GaussianSize To GaussianSize GaussianKernel(Y, X) = GaussianKernel(Y, X) / Sum Next XNext YKernelSize = (2 * GaussianSize) + 1SF = 0: Rad = 1Dim RKernel(99999) As Single, cnt As Integercnt = 0For 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 + 1Next YfScaleFactor = SF11Me.ClsReDim Kernel(1, Rad, C)cnt = 0Dim tmps As StringText1.Text = Text1.Text & vbCrLfText1.Text = Text1.Text + "Ma Tran loc" & vbCrLfText1.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 IText1.Text = Text1.Text + "nhap gia tri =" & fRadius & " kich thuoc ma tran la " & KernelSize & " x " & KernelSize & " " & vbCrLfText1.SelStart = Len(Text1.Text)Pic7.ClsDim tmpIntR As Double, tmpIntG As Double, tmpIntB As DoubleDim CTotal As SingleDim CDataR As Single, CDataG As Single, CDataB As SingleCTotal = (((GaussianSize * GaussianSize) + GaussianSize) * 4) + 1Dim tmpC As LongDim CountClr As Long12For 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.RefreshNext YPic7.RefreshExit SubErrHandle:Exit SubEnd Sub13IV. 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 Gauss14Phần III: Kết luậnTrong phần mà chúng em đã trình bày ở trên thì, một bước quan trọng khiphá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àyPhần V: Tư liệu tham khảo1. Nhập môn xử lý ảnh………………………Nguyễn Thanh Thủy2. Giáo trình xử lý ảnh……………………….ĐH Bách Khoa3. HẾT 15
Tài liệu liên quan
- Cải thiện ảnh chụp
- 3
- 323
- 0
- Tài liệu "Cải thiện" ảnh chụp ppt
- 5
- 440
- 0
- Tài liệu Chương 2: Cải thiện ảnh ppt
- 70
- 642
- 0
- Mẹo cải thiện "dung lượng" bộ nhớ để học từ vựng pptx
- 6
- 303
- 0
- cải thiện ảnh bằng bộ lọc gauss
- 15
- 3
- 29
- Cơ sở xử lý ảnh số Chương 2 cải thiện ảnh
- 71
- 477
- 0
- Hướng dẫn cải thiện ảnh phần 10 pdf
- 7
- 216
- 0
- Hướng dẫn cải thiện ảnh phần 9 potx
- 7
- 322
- 0
- Hướng dẫn cải thiện ảnh phần 8 potx
- 7
- 286
- 0
- Hướng dẫn cải thiện ảnh phần 7 docx
- 7
- 298
- 0
Tài liệu bạn tìm kiếm đã sẵn sàng tải về
(816.5 KB - 15 trang) - cải thiện ảnh bằng bộ lọc gauss Tải bản đầy đủ ngay ×Từ khóa » Code Bộ Lọc Gaussian
-
Lọc ảnh (Image Filtering) - AICurious
-
Các Bộ Lọc_phép Biến đổi ảnh Trong Xử Lý ảnh
-
Tiểu Luận Phương Pháp Lọc Gauss (Có Source Code) - Tài Liệu Text
-
Lọc Gaussian - Giao Diện Đơn Giản: Qt + OpenCV — Computer Vision
-
Phần 9. Lọc ảnh Sử Dụng Tích Chập Trong OpenCV
-
Các Bộ Lọc Trong Xử Lý ảnh
-
Gaussian Blur Là Gì - Tìm Hiểu Chi Tiết Tính Năng Blur Trong ...
-
Kỹ Thuật Lọc Ảnh Với OpenCV Trong C++ Cho Beginner - Codelearn
-
Tuần 4: Spatial Filtering - Các Phép Lọc Trong Không Gian điểm ảnh
-
Matlab Trong Xử Lý ảnh: Lọc Nhiễu Cho ảnh (p4) | Vi Mạch
-
Xử Lý ảnh - Làm Mờ ảnh (blur) - Minh Nguyen
-
Một Số Phương Pháp Khử Nhiễu ảnh: Các Phương Pháp Cổ điển - Viblo
-
Kĩ Thuật Lọc ảnh Và ứng Dụng Trong Lọc Nhiễu Làm Trơn - Slideshare