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!