2016-04-18 17 views
8

Tôi có một hình ảnh mà tôi cân bằng và sau đó sử dụng clahe histogram trên, như vậy:Làm thế nào để loại bỏ tiếng ồn khỏi một hình ảnh cân bằng biểu đồ?

self.equ = cv2.equalizeHist(self.result_array) 
clahe = cv2.createCLAHE(clipLimit=100.0, tileGridSize=(8,8)) 
self.cl1 = clahe.apply(self.equ) 

Đây là kết quả tôi nhận được:

enter image description here

Tôi muốn thoát khỏi tất cả các chấm đen là tiếng ồn. Cuối cùng, tôi đang cố gắng rút ra các mạch máu, màu đen trong hình ảnh được hiển thị ở trên, trong khi cố gắng làm như vậy, tiếng ồn làm cho việc khai thác không chính xác.

+1

tiếng ồn có vẻ là tương phản độc đáo cao, bạn chỉ cần áp dụng một quá trình bỏ rơi. Hãy thử câu trả lời này: http://stackoverflow.com/questions/5680429/how-to-implement-despeckle-in-opencv – PeteB

+3

có thể dễ dàng hơn để giảm tiếng ồn trong hình ảnh không được phân chia theo lịch sử. – Micka

+0

Nếu tiếng ồn này không có trong hình ảnh gốc, đó là một hiện vật của sự cân bằng. Bạn có thể thử các tùy chọn như hiệu chỉnh Gamma và độ tương phản kéo dài. Ngoài ra, bộ lọc Frangi thường được sử dụng để trích xuất các cấu trúc giống như tàu. – dhanushka

Trả lời

2

Phần lớn luận án của tôi là giảm tiếng ồn trong hình ảnh, và có một kỹ thuật tôi đã sử dụng làm giảm nhiễu trong hình ảnh trong khi vẫn giữ được các cạnh sắc nét của thông tin trong hình ảnh. Tôi tự trích dẫn ở đây:

Một kỹ thuật hiệu quả để loại bỏ nhiễu khỏi các mẫu rìa là lọc hình ảnh sử dụng lọc sin-sin [reference]. Một bộ lọc low-pass được kết hợp với hai hình ảnh đó là kết quả lấy sin và cosin của ảnh mẫu rìa, sau đó được chia để có được ốp, khôi phục mẫu pha nhưng giảm nhiễu. Lợi thế của kỹ thuật này là quá trình có thể được lặp lại nhiều lần để giảm tiếng ồn trong khi duy trì các chi tiết sắc nét của quá trình chuyển pha.

Và đây là đoạn code tôi sử dụng:

import numpy as np 
from scipy import ndimage 

def scfilter(image, iterations, kernel): 
    """ 
    Sine‐cosine filter. 
    kernel can be tuple or single value. 
    Returns filtered image. 
    """ 
    for n in range(iterations): 
     image = np.arctan2(
     ndimage.filters.uniform_filter(np.sin(image), size=kernel), 
     ndimage.filters.uniform_filter(np.cos(image), size=kernel)) 
    return image 

Có, image được một mảng NumPy đại diện cho hình ảnh, tuyến tính thay đổi tỷ lệ đặt màu đen ở 0 và trắng tại 2 * pi, và kernal là kích thước trong các pixel hình ảnh của bộ lọc thống nhất được áp dụng cho dữ liệu. Nó không nên mất quá nhiều lần lặp để xem kết quả dương tính, có thể trong khu vực từ 5 đến 20.

Hy vọng rằng sẽ giúp :)

Các vấn đề liên quan