How to change pixel values of background of an MRI Segmented result ?
1 次查看(过去 30 天)
显示 更早的评论
Hi, I am trying to run a script for object segmentation based on GMM. As the example presented below the image is segmented into 3 classes. the problem is that the background of the image has the same pixel value of one of the segmented classes. If i change into 4 classes the segmentation result is worse. Is there any solution?
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/158208/image.png)
0 个评论
回答(3 个)
Walter Roberson
2016-11-20
imclearborder -- unless the white part touches the border (if it does, then pad the image with a row of background before doing the clearing)
0 个评论
Ynne
2016-11-20
1 个评论
Walter Roberson
2016-11-20
Once you have cleared the border to black, you can imfill('holes') . That will get you an ROI mask.
The median of the outside edge values is probably going to be the border level. Pad the image with a row of that in case the real stuff touches the edge. imclearborder. imfile('holes')
But as for extracting: what data structure does your GMM segmentation need? Does it already handle being passed an ROI mask? Does it just want a vector of values? If it wants something 2D then you could extract down to a bounding box but you would still have problems.
Image Analyst
2016-11-20
What function are you using to get the GMM model? gmdistribution() or fitgmdist() followed by cluster? You can make a vector of pixel values to assign a cluster label to. Then you make another N-by-2 array that has the locations (row, column) of all the pixels in the ROI. Then with that you can create a classified image, and assign the pixels outside the ROI to some class number that identifies them as not assigned, like 0 or -1 or whatever.
0 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!