How to filter noise in a 3D structure/data array?
10 views (last 30 days)
Show older comments
I have a 3D structure of a water droplet (from an .asc file), this water droplet could be seen with a naked eye (approximately 2 cm wide or so) and one could observe its smooth surface, but when scanned I get the following image (shown in 3D on the left and in a 2D plane on the other).
These two peaks/lumps presented in the image, if real, should have been easily observable to the naked-eye, but they were not there, and therefore I would like to remove them from my image by smoothing the plane of the water droplet. How can I do so?
I have attached the 3 data arrays to this question.
I know that there are 3D volumetric image processing tools that recur to remove noise from 3D point clouds, but I am not sure how to use, or how to define that the only thing I want "cleaned" from this image are those sudden lumps/peaks.
0 Comments
Answers (1)
Image Analyst
on 30 Mar 2023
It looks as though you might be able to just get rid of all points where z is higher than 0.95
badRows = z > 0.95;
z(badRows) = [];
x(badRows) = [];
y(badRows) = [];
2 Comments
Image Analyst
on 30 Mar 2023
Well of course if your data is different, your algorithm may need to be different. Maybe you could rotate your data before denoising. Maybe you could try a modified median filter where you take the median filter of your data and if the filtered data is too far away from the actual data, replace the actual data with the median filtered value, or just delete that data point entirely. See attached demo where I remove salt and pepper noise.
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!