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!