Image processing: Is there a way to edit pixels based on neighbouring adjacent pixels?
2 次查看(过去 30 天)
显示 更早的评论
Hi, I'm doing some image processing with CT Scans and i want to separate the 3 main components sand, empty, calcite precipitation
Now, i used multithresh to convert it to RGB with 3 colours to visualize it and count the different colour pixels to calculate Area percentage of the components.
This is not optimal yet, because there are a lot of small red islands of calcite being misidentified in the middle of the yellow sand grains. I tried to remedy that by gaussian smoothing of the original (result below)
This is still not optimal, and I'd rather use something like bwareaopen (if there is something like that with RGB) to remove small 1or 2-pixel disturbances surrounded by pixels of another colour, or edit pixels based on surrounding pixels, so let's say if there is 6 of the 8 surrounding pixels of a different colour, the pixel is converted into that colour.
Is it possible to do that or to solve this in a different way? Use another kind of smoothing maybe?
0 个评论
采纳的回答
Image Analyst
2020-5-17
编辑:Image Analyst
2020-5-17
Yes, you can first get a mask of the sane that has blobs with the small holes (of calcite or whatever) you want to get rid of. Let's say the holes you want to get rid of have an area of 9 pixels or smaller, and if it's a hole 10 or larger than that you want to keep it. Then you get your binary image of just one class first, say, sandMask, then
% Only retain holes 10 pixels or bigger.
onlyBigBlobs = ~bwareaopen(~sandMask, 10);
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Convert Image Type 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!