How to filter noise in a 3D structure/data array?
9 次查看(过去 30 天)
显示 更早的评论
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 个评论
回答(1 个)
Image Analyst
2023-3-30
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 个评论
Image Analyst
2023-3-30
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.
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!