Tôi có một loạt hình ảnh làm dữ liệu thô mà tôi đang cố gắng chuẩn bị xuất bản. Những hình ảnh này có một loạt các đốm trắng ngẫu nhiên trong suốt mà tôi muốn thay thế bằng mức trung bình của một số điểm ảnh xung quanh.Làm cách nào để tìm và xóa các đốm trắng khỏi hình ảnh bằng SciPy/NumPy?
tôi không thể đăng hình ảnh, nhưng đoạn mã sau nên tạo ra một PNG rằng xấp xỉ với vấn đề mà tôi đang cố gắng để sửa chữa:
import numpy as np
from scipy.misc import imsave
random_array = np.random.random_sample((512,512))
random_array[random_array < 0.999] *= 0.25
imsave('white_specs.png', random_array)
Trong khi điều này nên tạo ra một hình ảnh với một tương tự phân phối của các đốm có trong dữ liệu thô của tôi, hình ảnh của tôi không có các đốm sáng đồng đều về cường độ và một số đốm lớn hơn một pixel kích thước (mặc dù không có pixel nào lớn hơn 2). Ngoài ra, có những điểm trên hình ảnh của tôi mà tôi không muốn thay đổi được cố ý bão hòa trong khi thu thập dữ liệu nhằm mục đích rõ ràng khi được trình bày: những điểm này có đường kính xấp xỉ 10 pixel.
Về nguyên tắc, tôi có thể viết một cái gì đó để tìm các pixel có giá trị vượt quá một ngưỡng nhất định sau đó kiểm tra chúng so với mức trung bình của các nước láng giềng gần nhất. Tuy nhiên, tôi cho rằng những gì tôi đang cố gắng đạt được không phải là một hành động không phổ biến trong xử lý hình ảnh, và tôi rất nghi ngờ rằng có một số chức năng SciPy sẽ làm điều này mà không cần phải tái tạo lại bánh xe. Vấn đề của tôi là tôi không đủ quen thuộc với các khía cạnh chính thức/từ vựng của xử lý hình ảnh để thực sự biết những gì tôi nên tìm kiếm. Ai đó có thể chỉ cho tôi đi đúng hướng?
Thao tác bạn đang tìm kiếm là thao tác _despeckle_. về cơ bản thay vì lấy trung bình của điểm ảnh với các điểm ảnh xung quanh, bạn lấy trung bình (của độ sáng). Có một ví dụ hay [ở đây] (https://github.com/niroyb/Despeckle/blob/master/despeckle.py). –
Có một cách tiếp cận khác [ở đây] (http://www.websupergoo.com/helpie/source/2-effects/despeckle.htm) mà despeckles bằng cách phân tích độ lệch chuẩn, sau đó chỉ sử dụng một bộ lọc trung bình nếu độ lệch chuẩn thấp đủ. –
Cảm ơn bạn đã đề xuất. Một người dùng khác đã đề xuất một SciPy tích hợp mà chỉ là thủ thuật. – PMende