Các Bộ Lọc_phép Biến đổi ảnh Trong Xử Lý ảnh

OPENLAB-IMAGE PROCESSINGBạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.OPENLAB-IMAGE PROCESSINGOPENLAB-IMAGE PROCESSING

FREE KNOWLEDGE FOR ALL PEOPLE

  • Trang ChínhTrang Chính
  • PortalPortal
  • Latest imagesLatest images
  • Tìm kiếmTìm kiếm

    Tìm kiếm

    Display results as :Số bàiChủ đề

    Tags

    Advanced Search Advanced Search

  • Đăng kýĐăng ký
  • Đăng NhậpĐăng Nhập
Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh3 posters

OPENLAB-IMAGE PROCESSING :: KHO TÀI LIỆU :: TÀI LIỆU VỀ XỬ LÝ ẢNH CƠ BẢN

Trang 1 trong tổng số 1 trang

Go down

Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh Empty Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh

Bài gửi by jackauk Sat Aug 22, 2015 10:40 am

Có rất nhiều bộ lọc trong xử lý ảnh bởi vì vốn dĩ xử ảnh là là xử lý tín hiệu số:    Bài viết này sẽ liệt kê các bộ lọc được dùng. Từng bộ lọc sẽ có tên tiếng Việt, tên Tiếng Anh, chức năng, và đường link tới bài viết về nó trong diễn đàn này. Sẽ có rất nhiều thiếu sót không mong muốn mà các bạn có thể bổ sung để có thể xây dựng lên một thống kê đầy đủ nhất, hiện đại nhât, hiệu quả nhất cho công việc xử lý ảnh. THống kê này luôn luôn được cập nhật những thông tin mới nhất, hữu ích nhất cho bạn.#OPENCV
  1. Bộ lọc Gaussian
 Xét trên miền tần số thì bộ lọc Gaussian sẽ giảm thành phần tần số cao trong hình ảnh hay nói cách khách bộ lọc Gaussian là bộ lọc thông cao ( chỉ giữ lại thành phần tần số thấp).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.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. 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.Nguồn trích dẫn: http://www.ieev.org/2009/06/gaussian-blur.html
2/ Bộ lọc Median3/ Bộ lọc Bilateral4/ Bộ lọc FFT5/ Bộ lọc. SobelĐược sửa bởi jackauk ngày Mon Sep 21, 2015 12:20 pm; sửa lần 3.jackaukjackaukThành viên thườngTổng số bài gửi : 63Điểm danh tiếng : 2Join date : 16/08/2015Age : 36Đến từ : TP Hồ Chí Minh LikeDislike

Về Đầu Trang Go down

Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh Empty Bộ lọc Gaussian

Bài gửi by jackauk Tue Aug 25, 2015 10:34 am

Xét trên miền tần số thì bộ lọc Gaussian sẽ loại bớt các thành phần có tần số cao và giữ là thành phần có tần số thấp. Dưới đây là phương trình hàm Gaussian dùng trong không gian một chiều và hai chiều.Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh D6b0acc2-ed84-4db9-9e89-ecc305c4cabfTrong đó 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 bố Gaussian hay là giá trị quyết định độ lệch giữa các điểm trên bề mặt Gaussian.Trong phân bố Gaussian chuẩn thì giá trị kỳ vọng μ =0.Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh GaussianDitributionCác bộ lọc_phép biến đổi ảnh trong xử lý ảnh GaussianKernelĐường cong Gauss chuẩn hóa với giá trị kỳ vọng μ =0 và phương sai σ2 =0.2 cho mảng 2 chiều ( ảnh) ;  Khoảng tập trung của phân bố trong khoảng(-1.341,1.341) là 99.7%       Giá trị mới của mỗi Pixel sau khi tính tích chập với nhân đại diện cho hàm Gaussian có thể coi là trung bình lượng giá trị 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ácTrong 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 , tập trung  trong khoảng 3 σ quanh tâm phân phối chuẩn chiếm 99.7% ở khoảngg 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... tùy vào giá trị phương sai chuẩn được chọn. Khoảng cách giữa hai điểm gần nhau trong Gaussian Kernel là σ.Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh GaussianDistributionVới nhân 3x3 phương sai σ được openCv tính là 0.95Biểu đồ phân bố Gaussian với phương sai σ= 0.95 của nhân 3x3Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh D9dd1aa0-90e7-4824-9d94-8e386aed7774Ma trận Gaussian 3x3 (đã được làm tròn theo hình thưc phân số) và dạng chuẩn hóa của nóCác bộ lọc_phép biến đổi ảnh trong xử lý ảnh Ada0c34e-47ef-4d6c-9b21-115779ff84bd Kết quả của làm mượt ảnh bằng bộ lọc Gaussian với nhân 3x3 phương sai σ= 0.95Với nhân 5x5 phương sai σ được openCv tính là 1.25Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh GaussianDistribution2Biểu đồ phân bố Gaussian với phương sai σ= 1.25 của nhân 5x5Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh OriginalkernelSau khi chuẩn hóa với số tỷ lệ là 2.116367 ta được  ma trận 5x5 đã được chuẩn hóaCác bộ lọc_phép biến đổi ảnh trong xử lý ảnh NormalizekernelKết quả của làm mượt ảnh bằng bộ lọc Gaussian với nhân 5x5 phương sai σ= 1.25Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh 91a41287-5ec2-45fa-9eb3-0a846ce80ae8jackaukjackaukThành viên thườngTổng số bài gửi : 63Điểm danh tiếng : 2Join date : 16/08/2015Age : 36Đến từ : TP Hồ Chí Minh LikeDislike

Về Đầu Trang Go down

Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh Empty Re: Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh

Bài gửi by jackauk Mon Aug 31, 2015 5:29 pm

Bộ lọc MedianLọc Median hay còn gọi là lọc trung vị khác với bộ lọc trung bình ở chỗ nó không xảy ra bất cứ phép tính toán gì, nó chỉ đơn giản là chỉ ra đâu là giá trí nằm ở vị trí trung bình trong các giá trị đầu vào được thiết lập bởi khung lọc rồi lấy giá trị đó thế vào tâm của khung lọc trong ảnh gốc để tạo ra giá trị ảnh mới. Hiệu quả của phép lọc có khí không rõ ràng, khó có thể nhận ra được sự thật đằng sau phép biến đổi vì nó chỉ thay đổi một số điểm ảnh thôi chứ không phải toàn bộ các điểm ảnh nhưng nó có ưu thế là sự sửa chữa mạnh mẽ một số điểm bất thường trên ảnh mà các bộ lọc khác không làm được hoặc dễ dàng bỏ qua.Với nhân chập 3x3 thì với một tập điểm ảnh như sau:Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh ConvolutionDemonstrationGiả sử vùng dữ liệu ảnh hiện có như trên thì khi sử dụng nhân 3x3 của lọc trung vị ta có các giá trị của nhân là:Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh DatasetSau khi sắp xếp theo độ lớn tăng dần thì ta có:Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh ArrangeddatasetNên giá trị của điểm ảnh sau khi lọc trung vị là 43Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh Median5x5Chập với nhân 5x5 của bộ lọc trung vịCác bộ lọc_phép biến đổi ảnh trong xử lý ảnh Median7x7Chập với nhân 7x7 của bộ lọc trung vịCác bộ lọc_phép biến đổi ảnh trong xử lý ảnh Median9x9Chập với nhân 9x9 của bộ lọc trung vịCode OPENCV 2.1: IplImage* result =cvCreateImage(cvGetSize(currentImage),8,3) ; // cvCopy(currentImage,result); // cvZero(result); cvSmooth(currentImage,result,CV_MEDIAN); cvShowImage("result",result); MessageBox::Show("Smooth");cvReleaseImage(&result);Code OPENCV 3.0: cv::Mat temp = cv::cvarrToMat(currentImage); cv::Mat results; cv::medianBlur(temp,results,9); cv::imshow("results",results);Code Matlab :Được sửa bởi jackauk ngày Sat Sep 19, 2015 4:18 pm; sửa lần 3.jackaukjackaukThành viên thườngTổng số bài gửi : 63Điểm danh tiếng : 2Join date : 16/08/2015Age : 36Đến từ : TP Hồ Chí Minh LikeDislike

Về Đầu Trang Go down

Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh Empty Re: Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh

Bài gửi by jackauk Sun Sep 06, 2015 12:21 am

Bộ lọc Bilateral ( Bộ lọc hai chiều): CV_BILATETALBộ lọc hai chiều làm mượt ảnh trong khi vẫn bảo toàn được cạnh, bằng cách kết hợp không tuyến tính của cá giá trị ảnh gần nhau. Phương thức này không lặp, cục bộ và đơn giản. Nó kết hợp các mức xám hay màu sắc dựa trên sự thân cận hình học của chúng và sự gần giống về độ sáng của chúng. Ngược với các bộ lọc hoạt động trên 3 dải màu riêng rẽ, bộ lọc hai chiều có  thể thi hành việc đo đạc có chủ đích với không gian màu CIE-Lab,và làm mượt màu và bảo toàn cạnh theo cái cách phù hợp với nhận thức của con người. Hơn nữa, khác với phép lọc chuẩn, bộ lọc hai chiều không tạo ra các bóng mờ  của màu dọc theo các cạnh của ảnh màu, và giảm đi bóng mờ của màu xuất hiện trên ảnh gốc.Nếu 3 kênh của ảnh màu được lọc riêng rẽ với nhau thì các màu sắc bị sai lệch gần với các biên của ảnh. Bởi thực tế, các kênh màu khác nhau có các mức tương phản khác nhau nên nó được lọc khác nhau. Việc làm mượt riêng lẻ sẽ làm xáo trộn sự cân bằng của màu sắc, xuất hiện những màu sắc kết được kết hợp không mong muốn. Bộ lọc hai chiều,  có thể thực thi với 3 kênh màu cùng 1 lúc nên có thể nói thẳng là màu vừa tương tự vừa không tương tự. Chỉ những màu phù hợp nhận thức thì bằng trung bình của các màu khác , và các màu không phù hợp thì bị loại bỏ. Bộ lọc hai chiều xét đến cả dải màu của ảnh trong khi các bộ lọc truyền thống chỉ xét từng miền ảnh. Hai pixel có thể được coi như là gần  với một pixel khác, điều đó phụ thuộc vào vị trí không gian gần nhau, hay chúng có thể  tương tự với một pixel khác, điều đó được hiểu là xấp xỉ về giá trị.  Bộ lọc hai chiều vừa có thể quân bình nhiễu trên vùng ảnh vừa có thể giữ lại đường viền của miền không bị quân bình.Coi bộ lọc không dịch _biến đổi cho mức thấp qua áp dụng cho ảnh là : Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh Formular1Ảnh đầu vào và đầu ra đều có thể là nhiều kênh. Để giữ lại thành phần hằng số d,  thì :Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh Formular2Bộ lọc theo dải được định nghĩa tương tự :Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh Formular3Trong trường hợp này nhân để đo sáng tương tự nhân để đo khoảng cách giữa pixel. Hằng số được chuẩn hóa trong trường hợp này thì :Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh Formular4Sự phân bố không gian của cường độ ảnh không đóng vai trò trong bộ lọc theo dải màu mà được nhận từ chính nó. Kết hợp các mức cường độ từ toàn thể bức ảnh, tuy nhiên có thể tạo nên chút ý nghĩa khi mà sự phân bố của giá trị ảnh xa giá trị x không có khả năng ảnh hưởng đến giá trị sau cùng của x. Thêm nữa, điều này có thể chỉ ra rằng bộ lọc theo dải mà không có bộ lọc theo miền thì đơn thuần chỉ là thay đổi bản đồ màu của bức ảnh và do đó nó ít được dùng.Giải pháp thích hợp là kết hợp cả bộ lọc theo dải màu và theo miền ảnh, bằng cách ấy có thể gắn kết được cả phép đo theo hình học và đo sáng vị trí. Sự kết hợp này được mô tả như sau :Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh Formular5Với  tiêu chuẩn hóa :Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh Formular6Kết hợp bộ lọc theo miền và bộ lọc theo dải được gọi là bộ lọc hai chiều. Nó thay thế  gái trị pixel tại điểm x với giá trị trung bình của các điểm tương tự và gần với giá trị pixel. Trong miền làm mượt, giá trị pixel trong một khoảng lân cận nhỏ thì tương tự với các điểm khác, và bộ lọc hai chiều hoạt động chủ yếu như một lọc theo miền tiêu chuẩn, bình quân các sự khác biệt nhỏ, yếu tương quan giữa các giá trị pixel gây ra bởi nhiễu. Bây giờ xét tới một biên dạng hình thể giữ hai vùng sáng tối như hình sau : Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh BilateralHình 1Ở bộ lọc hai chiều, những pixel nếu nằm ở bên sáng của đường biên thì có giá trị gần với pixel cùng bên sáng và gần với gái trị 0 khi pixel nằm bên tối. Hàm tương tự được thể hiện ở ảnh 1b cho bộ lọc 23x23 tâm ở 2 điểm . Chuẩn hóa điều kiện k(x) bảo đảm cho tổng cho tất cả các pixel được cộng thêm 1. Với kết quả, bộ lọc thay  pixel sáng tại tâm đang xử lý lọc bằng một giá trị trung bình của cac pixel sáng lân cận của nó, và quan trong là loại bỏ pixel tối. Điều ngược lại, khi tâm của bộ lọc nằm ở pixel tối, pixel sáng bị bỏ qua. Vì vậy, như ở hình 1, mặt tốt của bộ lọc được thể hiện ở các vùng biênVới trường hợp bộ lọc hai chiều với phân phối Gaussian ta có :  Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh Formular7Khi :Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh Formular8Là khoảng các trong không gian Euclid. Hàm tương tự thì tương đồng hoàn toàn với c:Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh Formular9Khi:Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh Formular10Là đơn vi đo thích hợp cho khoảng cách trong không gian. Trong trường hợp sử dụng tỷ lệ phóng, nó làm đơn giản quá trình tìm trị tuyệt đối chênh lệch giữa các pixel khác nhau, khi tăng cường nhiễu với cường độ ảnh, thì sẽ tăng cượng độ phụ thuộc vào nó.Bộ lọc hai chiều trong OpenCV sử dụng tham số CV_BILATERAL cho mode, kích thước của nhân là param1x param 1,  (color sigma_độ lệch màu sắc) =param4, ( spatial sigma_độ lệch không gian) =param3.Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh ResultBiltateraljackaukjackaukThành viên thườngTổng số bài gửi : 63Điểm danh tiếng : 2Join date : 16/08/2015Age : 36Đến từ : TP Hồ Chí Minh LikeDislike

Về Đầu Trang Go down

Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh Empty Re: Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh

Bài gửi by jackauk Thu Sep 17, 2015 12:57 am

Bộ lọc hay phép biến đổi Fourier nhanh (Fast Fourier Transform -FFT) Một biến đổi Fourier nhanh (FFT) là một thuật toán hiệu quả để tính biến đổi Fourier rời rạc (DFT) và biến đổi ngược. Có nhiều thuật toán FFT khác nhau sử dụng kiến thức từ nhiều mảng khác nhau của toán học, từ số phức tới lý thuyết nhóm và lý thuyết số. Phép biến đổi DFT phân tích một dãy các số thành các thành phần ở các tần số khác nhau. Nó được sử dụng trong nhiều lĩnh vực khác nhau (xem các tính chất và ứng dụng ở biến đổi Fourier rời rạc) nhưng tính toán trực tiếp từ định nghĩa thường quá chậm trong thực tế. FFT là một cách để đạt được cùng kết quả đó nhưng nhanh hơn nhiều: tính DFT của N điểm trực tiếp theo định nghĩa đòi hỏi O(N2) phép tính, trong khi FFT tính ra cùng kết quả đó trong O(N log N) phép tính.Giả sử x0, x1,..., xn là các số phức. DFT được định nghĩa bởi công thức sau:Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh FomularTính trực tiếp từ định nghĩa trên đòi hỏi O(N2) phép tính: có N số Xk cần tính, để tính mỗi số cần tính một tổng N số hạng. Một FFT là một phương pháp để tính cùng kết quả đó trong O(N log N) phép tính.Ứng dụng của phép biến đổi này trong xứ lý ảnh là phân tích bức ảnh thay vì dưới dạng không gian 2 chiều của các điểm ảnh có giá trị cường độ sáng thành một miền một chiều theo tần số gọi là phân tích phổ.Để biết rõ hơn các bạn nên tham khảo về nó trên internet bởi vì riêng kiến thức về nó thôi đã trở thành một ngành khoa học rồi. Trong khuôn khổ chủ đề này mình chỉ muốn giới thiệu ứng dụng của nó để các bạn có thể lựa chọn phương pháp lọc cùa mình cho phù hợp với yêu cầu. Biến đổi Fourier sẽ phân tích một bức ảnh thành hai thành phần cos và sin. Nói cách khác, nó biến đổi ảnh từ miền không gian sang miền tần số. Ý tưởng là có một hàm nào đó có thể xấp xỉ một cách chính xác với tổng vô hạn của hàm sin và cos. Biến đổi Fourier là cách để làm điều đó. Dạng toán học của biến đổi Fourier ảnh hai chiều là :Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh Fomular2f ở đây là giá trị ảnh trong miền không gian và F là giá trị ảnh trong miền tần số. Kết quả của phép biến đổi là tập số phức. Điều này có thể biểu diễn thông qua một ảnh thực và một ảnh phức hay thông qua độ lớn và một ảnh pha. Tuy nhiên qua thuật toán biến đổi ảnh thì chỉ có ảnh biên độ mới có giá trị bởi nó chứa tất cả thông tin về các cấu trúc hình học của ảnh. Tuy vậy, nếu bạn có dự định làm điều gì đó với ảnh biên độ ( cường độ độ lớn) và biến đổi ngược lại về miền không gian thì bạn cần cả hai thành phần ảnh  biên độ và pha (magnitude và phase).Trong ví dụ sau đây chúng tôi sẽ chỉ cách tính toán và hiển thị ảnh cường độ của phép biến đổi Fourier. Trong trường hợp ảnh số là rời rạc. Có nghĩa là chúng được hiểu là giá trị từ miền giá trị nhận được. Ví dụ là một ảnh xám thường có giá trị điểm ảnh nằm trong khoảng từ 0 đến 255. Do đó phép biến đổi Fourier cần những giá trị kết quả rời rạc. Bạn sẽ muốn sử dụng nó bất cứ khi nào bạn cần xác định cấu trúc của bức ảnh từ tất cả các cấu trúc hình học nào trong tầm mắt. Sau đây là các bước cần thiết cho một ảnh xám đầu vào.
  1. Mở rộng ảnh đến một kích thước tối ưu. Phép biến đổi Fourier đạt trạng thái nhanh nhất khi kích thước ảnh là bộ số của 2,3 5.
  2. Tạo nơi chứa cho giá trị phức và giá trị thựcLưu ý rằng phép biến đổi kết quả sẽ rất là lẻ, cần nhiều con số để biểu diễn nên lưu trữ chúng dưới dạng float ( CV_32F) chứ không phải kiểu int hay char như ảnh gốc ( 0-255)
  3. Tiến hành biến đổi Fourier rời rạc
  4. Biến đổi giá trị phức và giá trị thực sang dạng biên độ độ lớnCác bộ lọc_phép biến đổi ảnh trong xử lý ảnh Magnitude
  5. Biểu diễn dưới dạng logaritDo kết quả tính toán vượt giá trị có thể biểu diễn điểm ảnh của màn hình cho nên phải hạ tỷ lệ nó theo logarit cơ số 10. Ví dụ log100 =2, log1000=3.....
  6. Cắt tỉa hình và sắp xếp lạiDo bước đầu tiên ta giãn ra thì phải co lại theo tỷ lệ gốc để có thể hiển thị được kết quả.
  7. CHuẩn hóaVì mục đích dễ mường tượng kết quả phải chuẩn hóa nó về dạng ảnh xám ý nghĩa là giống như trên một bức ảnh ta có tất cả đều là màu đỏ nhưng mà có cái đỏ đậm có cái đỏ nhạt, có cái phơn phớt ta giãn nó ra thành màu xám màu xanh màu đỏ màu vàng.... thì dễ phân biệt được các màu với nhau.
Code sau là viết với OpenCV 2.4.9 ( các bạn sẽ thấy làm việc với ảnh như một mảng số của Matlab)1 #include "opencv2/core/core.hpp"2 #include "opencv2/imgproc/imgproc.hpp"3 #include "opencv2/highgui/highgui.hpp"4 #include <iostream>5 int main(int argc, char ** argv)6 {7 const char* filename = argc >=2 ? argv[1] : "lena.jpg";8 9   Mat I = imread(filename, CV_LOAD_IMAGE_GRAYSCALE);10 if( I.empty())11 return -1;1213 Mat padded; //expand input image to optimal size14 int m = getOptimalDFTSize( I.rows );15 int n = getOptimalDFTSize( I.cols ); // on the border add zero values16 copyMakeBorder(I, padded, 0, m - I.rows, 0, n - I.cols, BORDER_CONSTANT, Scalar::all(0));1718 Mat planes[] = {Mat_<float>(padded), Mat::zeros(padded.size(), CV_32F)};19 Mat complexI;20 merge(planes, 2, complexI); // Add to the expanded another plane with zeros2122 dft(complexI, complexI); // this way the result may fit in the source matrix2324 // compute the magnitude and switch to logarithmic scale25 // => log(1 + sqrt(Re(DFT(I))^2 + Im(DFT(I))^2))26 split(complexI, planes); // planes[0] = Re(DFT(I), planes[1] = Im(DFT(I))27 magnitude(planes[0], planes[1], planes[0]);// planes[0] = magnitude28 Mat magI = planes[0];2930 magI += Scalar::all(1); // switch to logarithmic scale31 log(magI, magI);3233 // crop the spectrum, if it has an odd number of rows or columns34 magI = magI(Rect(0, 0, magI.cols & -2, magI.rows & -2));3536 // rearrange the quadrants of Fourier image so that the origin is at the image center37 int cx = magI.cols/2;38 int cy = magI.rows/2;3940 Mat q0(magI, Rect(0, 0, cx, cy)); // Top-Left - Create a ROI per quadrant41 Mat q1(magI, Rect(cx, 0, cx, cy)); // Top-Right42 Mat q2(magI, Rect(0, cy, cx, cy)); // Bottom-Left43 Mat q3(magI, Rect(cx, cy, cx, cy)); // Bottom-Right4445 Mat tmp; // swap quadrants (Top-Left with Bottom-Right)46 q0.copyTo(tmp);47 q3.copyTo(q0);48 tmp.copyTo(q3);4950 q1.copyTo(tmp); // swap quadrant (Top-Right with Bottom-Left)51 q2.copyTo(q1);52 tmp.copyTo(q2);5354 normalize(magI, magI, 0, 1, CV_MINMAX); // Transform the matrix with float values into a55 // viewable image form (float between values 0 and 1).5657 imshow("Input Image" , I ); // Show the result58 imshow("spectrum magnitude", magI);59 waitKey();6061 return 0;62 }Mình nhắc lại là ta không chắc kết quả của quá trình của biến đổi ảnh khi mà ta không thử trước. Công việc xử lý ảnh không phải là công việc ngày một ngày hai mà là quan trọng là kinh nghiệm của người lập trình trải qua nhiều lần thử nghiệm các phép lọc, phép biến đổi khác nhau. Nhiều phép biến đổi lạ lẫm ta phải thử đi thử lại để đạt được kết quả mong muốn. Có phép biến đổi hợp lý có phép biến đổi chả ra kết quả gì. Ở đây phép biến đổi DFT cho ta cấu trúc hình học chủ yếu của ảnh. Hai ảnh dưới đây cho ta mường tượng hiệu quả của phép biến đổi DFT như thế nào.Ảnh kết quả của chữ in thẳng.Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh Result_normalẢnh kết quả của ảnh có chữ bị nghiêngCác bộ lọc_phép biến đổi ảnh trong xử lý ảnh Result_rotatedSau đó, việc còn lại là ta sẽ dùng các phép lọc, phép biến đổi khác để nhận ra được kết quả mong muốn. Hiệu quả của phép biến đổi, xem video sau để rõ hơn:Được sửa bởi jackauk ngày Wed Sep 23, 2015 12:24 pm; sửa lần 2.jackaukjackaukThành viên thườngTổng số bài gửi : 63Điểm danh tiếng : 2Join date : 16/08/2015Age : 36Đến từ : TP Hồ Chí Minh LikeDislike

Về Đầu Trang Go down

Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh Empty Re: Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh

Bài gửi by jackauk Mon Sep 21, 2015 4:28 pm

Phép biến đổi Cosin
Jürgen Brauer đã viết:   Biến đổi Fourier rời rạc (DFT) và Biến đổi Cosine rời rạc(DCT) đều biểu diễn những chức năng tương tự: chúng đều phân tích vetor rời rạc theo thời gian, có chiều dài giới hạn thành tổng những hàm dịch và tỷ lệ. Cái khác biệt giữa chúng là kiểu của những hàm được sử dụng bởi mỗi phép biến đổil DFT sử dụng tập hợp các hàm lũy thừa phức điều hòa, trong khi đó DCT chỉ sử dụng những hàm cosine( giá trị thực).    DFT được sử dụng rộng rãi trong các việc tạo nên những ứng dụng phân tích phổ để tìm vai trò của chúng trong dải tần số. Nó cũng được sử dùng như là khối kỹ thuật cho việc phân tích những đặc tính khi biểu diễn tín hiệu trên miền tần số, như các thuật toán chập nhanh có ghi chồng và lưu chồng.    DCT thường được sử dụng trong các ứng dụng nén giảm dữ liệu như là định dạng ảnh JPEG. Thuộc tính của DCT hơi thích hợp cho việc nén được nhìn nhận là cấp cao của việc nén phổ, đạt hiệu quả cao; Việc biểu diễn tín hiệu của DCT hướng tới việc có nhiều năng lượng (hiệu suất) tập trung ở một số nhỏ những hệ số khi so sánh các phép biến đổi khác như DFT. Đây là điều được mong đợi cho một thuật toán nén ảnh; nếu bạn có biểu diễn xấp xỉ  tín hiệu ảnh gốc ( trên miền thời gian, không gian) sử dụng một tập hợp nhỏ những hệ số DCT có liên quan. sau đó bạn có thể giảm kích thước đòi hỏi cho vùng lưu trữ dữ liệu bằng cách chỉ lưu trữ những đầu ra của phép biến đổi DCT chứ một số lượng năng lượng quan trọng
Đoạn code dưới đây mô tả việc biến đổi ảnh bằng DCT và sau đó biến đổi ngược lại bằng Inverse DCT sau khi đã làm mất mát đôi chút dữ liệu không cần quan trọng để ý ở đoạn  at<double>(y,x)=0.0;   IplImage* grays =cvCreateImage(cvGetSize(currentImage),8,1) ; cvCvtColor(currentImage,grays,CV_RGB2GRAY); cv::Mat img = cv::cvarrToMat(grays);// nếu là Mat rồi thì không cần chuyển đổi cv::Mat img2; int w = img.cols%2?img.cols+1:img.cols; int h =img.rows%2?img.rows+1:img.rows; cv::copyMakeBorder(img, img2, 0, h-img.rows, 0, w-img.cols, IPL_BORDER_REPLICATE); // DCT chỉ hoạt động với ma trận có kích thước dài và rộng là số chẵn nên ta phải canh chỉnh trước// Grayscale image is 8bits per pixel,// but dct() method wants float values!cv::Mat img3 = cv::Mat( img2.rows, img2.cols, CV_64F);img2.convertTo(img3, CV_64F);// Tất nhiên là ảnh phải phải chuyển đổi từ dạng nguyên 8 bit sang dạng số thực để tính toán // Let's do the DCT now: image => frequenciescv::Mat freq;cv::dct(img3, freq);  cv::imshow("Result",freq); for (int Start=100; Start>0; Start-=1){    // Set some frequencies to 0    for (int y=Start; y<freq.rows; y++)    {        for (int x=Start; x<freq.cols; x++)        {            freq.at<double>(y,x) = 0.0;        }    }     // Do inverse DCT: (some low) frequencies => image    cv::Mat dst;    cv::idct(freq, dst);     char txt[100];    sprintf(txt, "%04d", Start);    cv::putText( dst, txt, cv::Point(10,20),  CV_FONT_HERSHEY_SIMPLEX, 0.5, CV_RGB(0,0,0) );      cv::Mat idst = cv::Mat( dst.rows, dst.cols, CV_8U);dst.convertTo(idst, CV_8U);//Phải chuyển đổi về dạng 8bit mới có thể biểu diễn ảnh lên được cv::imshow("Result in inverse mode",idst); cv::waitKey(5);}jackaukjackaukThành viên thườngTổng số bài gửi : 63Điểm danh tiếng : 2Join date : 16/08/2015Age : 36Đến từ : TP Hồ Chí Minh LikeDislike

Về Đầu Trang Go down

Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh Empty Re: Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh

Bài gửi by phamithi Thu Mar 24, 2016 8:38 pm

Anh ơi cho em hỏi đoạn code demo đầu tiên của anh em cop về chạy thử thì chương trình chạy bị lỗi, khi debug thì đến dòng lệnh thứ 18 VC2015 báo "Unhandled exception at 0x000007FEFD91965D in Project1.exe: Microsoft C++ exception: cv::Exception at memory location 0x000000000011EB70". Em dùng opencv 3.1, do mới bước đầu học sử dụng nên còn gà quá, mong anh chỉ giúpCảm ơn anh SmilephamithiThành viên thườngTổng số bài gửi : 8Điểm danh tiếng : 0Join date : 24/03/2016 LikeDislike

Về Đầu Trang Go down

Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh Empty Re: Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh

Bài gửi by jackauk Mon Mar 28, 2016 2:49 pm

phamithi đã viết:Anh ơi cho em hỏi đoạn code demo đầu tiên của anh em cop về chạy thử thì chương trình chạy bị lỗi, khi debug thì đến dòng lệnh thứ 18 VC2015 báo "Unhandled exception at 0x000007FEFD91965D in Project1.exe: Microsoft C++ exception: cv::Exception at memory location 0x000000000011EB70". Em dùng opencv 3.1, do mới bước đầu học sử dụng nên còn gà quá, mong anh chỉ giúpCảm ơn anh Smile
Dòng 18 là dòng nào ?jackaukjackaukThành viên thườngTổng số bài gửi : 63Điểm danh tiếng : 2Join date : 16/08/2015Age : 36Đến từ : TP Hồ Chí Minh LikeDislike

Về Đầu Trang Go down

Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh Empty Re: Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh

Bài gửi by phamithi Mon Mar 28, 2016 5:26 pm

Đoạn code đầu tiên, Em chạy đến dòng này là bị báo lỗi như trên ạMat planes[] = {Mat_<float>(padded), Mat::zeros(padded.size(), CV_32F)};phamithiThành viên thườngTổng số bài gửi : 8Điểm danh tiếng : 0Join date : 24/03/2016 LikeDislike

Về Đầu Trang Go down

Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh Empty Re: Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh

Bài gửi by Admin Tue Mar 29, 2016 2:03 pm

phamithi đã viết:Đoạn code đầu tiên, Em chạy đến dòng này là bị báo lỗi như trên ạMat planes[] = {Mat_<float>(padded), Mat::zeros(padded.size(), CV_32F)};
Dòng này dùng để khởi tạo 1 mảng gồm 2 phần tử là 2 cấu trúc Mat, với Mat thứ nhất là ảnh gốc đã được canh lề, ảnh 2 là một cái cấu trúc Mat các phần tử bằng 0.Thường thường nó báo lỗi dòng đó nhưng thật sự là dòng trước hoặc sau nó bị lỗi. Em in ra màn hình hoặc vẽ ra bức ảnh , kiểm tra chiều rộng, cao , số chiều của nó có khớp nhau không. Để tối nay anh kiểm tra lại code, vì code này anh lấy của người ta nhưng đã chạy ngon rồi.AdminAdminAdminTổng số bài gửi : 17Điểm danh tiếng : 0Join date : 16/08/2015 https://openlab.forumvi.comLikeDislike

Về Đầu Trang Go down

Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh Empty Re: Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh

Bài gửi by phamithi Tue Mar 29, 2016 6:51 pm

Do dòng code ở trên e không dùng argv mà dùng lệnh imread và add link trực tiếp vào luôn thì ko chạy. nhưng dùng argv và phải chạy qua file exe thì mới được chứ em không chạy trực tiếp từ chương trình được ạ. Anh xem và chỉ giúp em với nguyên nhân là do đâu? Em cảm ơn Smile phamithiThành viên thườngTổng số bài gửi : 8Điểm danh tiếng : 0Join date : 24/03/2016 LikeDislike

Về Đầu Trang Go down

Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh Empty Re: Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh

Bài gửi by jackauk Tue Mar 29, 2016 9:56 pm

phamithi đã viết:Do dòng code ở trên e không dùng argv mà dùng lệnh imread và add link trực tiếp vào luôn thì ko chạy. nhưng dùng argv và phải chạy qua file exe thì mới được chứ em không chạy trực tiếp từ chương trình được ạ. Anh xem và chỉ giúp em với nguyên nhân là do đâu? Em cảm ơn Smile
Vậy thì đường link em đưa không đúng rồi .Ví dụ link đúng : "D://anh//191.jpg" 2 dấu // thay vì 1 dấu / nhé Có thể chấp nhận đường link như sau "D:\anh\191.jpg" dấu \ ngược chiều so với dấu / . Lý do là trong lập trình mã unicode của 1 string thì ký tự \ có thể khởi đầu cho 1 mã unicode đặc biệt ví dụ như \0 là ký tự rỗng \r là ký tự xuống dòng \n là ký tự thụt vào 1 ký tự khi xuống dòng mới.jackaukjackaukThành viên thườngTổng số bài gửi : 63Điểm danh tiếng : 2Join date : 16/08/2015Age : 36Đến từ : TP Hồ Chí Minh LikeDislike

Về Đầu Trang Go down

Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh Empty Re: Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh

Bài gửi by phamithi Wed Mar 30, 2016 12:21 pm

À em biết nguyên nhân lỗi do e imread hình vào ở mode color thay vì grayscale như code của anh thì nó chạy được. Vậy cho em hỏi thêm nếu với ảnh màu thì có thể biểu diễn được ko ạ và làm như thế nào SmilephamithiThành viên thườngTổng số bài gửi : 8Điểm danh tiếng : 0Join date : 24/03/2016 LikeDislike

Về Đầu Trang Go down

Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh Empty Re: Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh

Bài gửi by jackauk Thu Mar 31, 2016 2:12 pm

Việc xử lý DFT hay DCT đều xử lý trên miền đơn giá trị thôi nghĩa là nghĩa là ảnh xám, còn khi muốn áp dụng cho ảnh màu thì phải chia ra làm 3 lần xử lý cho 3 màu. Mà thông thường các phép biến đổi áp dụng cho ảnh xám thôi muốn xử lý ảnh màu thì làm 3 lầnjackaukjackaukThành viên thườngTổng số bài gửi : 63Điểm danh tiếng : 2Join date : 16/08/2015Age : 36Đến từ : TP Hồ Chí Minh LikeDislike

Về Đầu Trang Go down

Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh Empty Re: Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh

Bài gửi by phamithi Thu Mar 31, 2016 2:27 pm

Em cảm ơn anh. A có thể viết 1 bài viết hoặc giải thích giúp em về thuật tóan histogram of gradient được không ạ. E xem paper về nó thì e ko hiểu cách tính normalization block ntn. Chắc do tiếng anh dở Sad phamithiThành viên thườngTổng số bài gửi : 8Điểm danh tiếng : 0Join date : 24/03/2016 LikeDislike

Về Đầu Trang Go down

Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh Empty Re: Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh

Bài gửi by jackauk Fri Apr 01, 2016 8:39 am

phamithi đã viết:Em cảm ơn anh. A có thể viết 1 bài viết hoặc giải thích giúp em về thuật tóan histogram of gradient được không ạ. E xem paper về nó thì e ko hiểu cách tính normalization block ntn. Chắc do tiếng anh dở Sad
Việc chuẩn hóa của một ma trận hơi bị khoai đấy nó liên quan đến toán A2, nếu em đọc kỹ lại toán A2 rồi dịch các từ Tiếng Anh chuyên ngành ra tiếng việt sẽ dễ hiểu hơn (ma trận chéo trên, chéo dưới, khả nghịch, ma trận nghich đảo......) jackaukjackaukThành viên thườngTổng số bài gửi : 63Điểm danh tiếng : 2Join date : 16/08/2015Age : 36Đến từ : TP Hồ Chí Minh LikeDislike

Về Đầu Trang Go down

Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh Empty Re: Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh

Bài gửi by phamithi Fri Apr 01, 2016 9:22 am

Anh viết tiếp các bài học thuật về xử lý ảnh đi anh Smile em thấy VN có ít thông tin về nó quá,page này em thấy a viết khá tường tận và lĩnh vực cũng chuyên sâu nhưng lâu rồi không thấy post bài nữa Sad phamithiThành viên thườngTổng số bài gửi : 8Điểm danh tiếng : 0Join date : 24/03/2016 LikeDislike

Về Đầu Trang Go down

Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh Empty Re: Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh

Bài gửi by jackauk Sat Apr 02, 2016 10:46 am

phamithi đã viết:Anh viết tiếp các bài học thuật về xử lý ảnh đi anh Smile em thấy VN có ít thông tin về nó quá,page này em thấy a viết khá tường tận và lĩnh vực cũng chuyên sâu nhưng lâu rồi không thấy post bài nữa Sad
Đi làm tối ngày nên không có thời gian rảnh để làm. Có mấy đứa đàn em sinh viên nhưng mà chúng cũng chả mê món này nên cứ để từ từ có thời gian thì viết tiếp.Nếu em có hứng thú với những thứ này em tìm nguồn từ trang face-rec.org hoặc trang chủ của opencv . Em có thể liên hệ với em Luân cũng ở trong diễn đàn này, em ấy đang có ý định dịch document của openCV3.1 đấy. Anh có thể bảo nó liên hệ với em nếu em để thông tin liên lạc lại đâyjackaukjackaukThành viên thườngTổng số bài gửi : 63Điểm danh tiếng : 2Join date : 16/08/2015Age : 36Đến từ : TP Hồ Chí Minh LikeDislike

Về Đầu Trang Go down

Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh Empty Re: Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh

Bài gửi by phamithi Mon Apr 04, 2016 2:17 pm

Em tên Thiện, email thienpm92@gmail.com. Em mới bước đầu làm quen với XLA nên dùng opencv để tìm hiểu nhanh các cách thức mà thuật toán nó chạy như thế nào. Còn chủ yếu công việc của em là đi sâu vào nghiên cứu và tối ưu các pp xử lý ảnh hiện có ạphamithiThành viên thườngTổng số bài gửi : 8Điểm danh tiếng : 0Join date : 24/03/2016 LikeDislike

Về Đầu Trang Go down

Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh Empty Re: Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh

Bài gửi by jackauk Mon Apr 04, 2016 2:27 pm

phamithi đã viết:Em tên Thiện, email thienpm92@gmail.com. Em mới bước đầu làm quen với XLA nên dùng opencv để tìm hiểu nhanh các cách thức mà thuật toán nó chạy như thế  nào. Còn chủ yếu công việc của em là đi sâu vào nghiên cứu và tối ưu các pp xử lý ảnh hiện có ạ
Anh thấy trên facebook của em đề là đang nghiên cứu ở Hàn, nếu em có hướng đi nào mới, phương pháp nào mới có thể chia sẻ được thì chia sẻ nhéjackaukjackaukThành viên thườngTổng số bài gửi : 63Điểm danh tiếng : 2Join date : 16/08/2015Age : 36Đến từ : TP Hồ Chí Minh LikeDislike

Về Đầu Trang Go down

Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh Empty Re: Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh

Bài gửi by phamithi Mon Apr 04, 2016 2:31 pm

Vâng cũng hy vọng vậy Smile nhưng e mới vào thôi nên còn nhiều cái chưa biết mong anh chỉ giáo thêm qua các bài post phamithiThành viên thườngTổng số bài gửi : 8Điểm danh tiếng : 0Join date : 24/03/2016 LikeDislike

Về Đầu Trang Go down

Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh Empty Re: Các bộ lọc_phép biến đổi ảnh trong xử lý ảnh

Bài gửi by Sponsored content

Sponsored content

Về Đầu Trang Go down

Về Đầu Trang

+ Similar topics- Similar topics» Các cơ sở dữ liệu trong nhận dạng (Databases)» Năm ngôn ngữ lập trình được sử dụng trong lập trình tiến hóa» Độ tiên tiến của tri thức có trong diễn đàn

OPENLAB-IMAGE PROCESSING :: KHO TÀI LIỆU :: TÀI LIỆU VỀ XỬ LÝ ẢNH CƠ BẢN

Trang 1 trong tổng số 1 trangChuyển đến: Chọn Diễn Đàn||--TIỀN SẢNH| |--THÔNG BÁO CHUNG| |--CÁC QUY ĐỊNH CỦA PHÒNG NGHIÊN CỨU MỞ| |--KHEN THƯỞNG VÀ XỬ PHẠT THÀNH VIÊN| |--KHO TÀI LIỆU| |--TÀI LIỆU VỀ XỬ LÝ ẢNH CƠ BẢN| |--TÀI LIỆU VỀ NHẬN DẠNG TRONG XỬ LÝ ẢNH| |--CÁC THƯ VIỆN LẬP TRÌNH XỬ LÝ ẢNH| |--PHÒNG HỌC TẬP| |--HỌC TẬP THEO CHUYÊN ĐỀ| | |--Những vấn đề cơ bản về máy tính| | |--Thuật toán di truyền với Python| | | |--HỎI ĐÁP VÀ TƯ VẤN| |--PHÒNG DỰ ÁN| |--HCMUTE| |--PHÒNG SINH HOẠT CHUNG| |--KHU TÁN GẪU| |--ĐOÀN, ĐỘI, HỘI, NHÓM| |--HOẠT ĐỘNG XÃ HỘI |--HOẠT ĐỘNG TỪ THIỆN Permissions in this forum:Bạn không có quyền trả lời bài viết
  • Trang Chính
  • Free forum | ©phpBB | Free forum support | Báo cáo lạm dụng | Thảo luận mới nhất

Từ khóa » Bộ Lọc Gaussian Blur