Image segmentation using thresholding

I have raw image of rocks like the one on the right, I want a code to get the result on the left

댓글 수: 3

Cris LaPierre
Cris LaPierre 2024년 4월 19일
What do the different colors correspond to?
Have you tried using the Color Threshholder app? Here's an example that you might find useful
Rlue : Pores
Red: Grains
Green: in between
DGM
DGM 2024년 4월 21일
Hmm. There may be some better way of doing the classification, but I don't know what it would be. The gray levels that I estimated from the example image seems fairly plausible, though it might be worth trying to adjust them. I am also not really sure what subsequent steps need to be performed on these labeled regions; consequently, I'm not really sure how exact they need to be.

댓글을 달려면 로그인하십시오.

답변 (1개)

DGM
DGM 2024년 4월 19일
편집: DGM 2024년 4월 19일
Since we're playing guessing games, here's my guess.
% you might have an actual image, but all we have is a screenshot
inpict = imread('image.bmp');
inpict = imcrop(inpict,[3.51 23.51 703.98 471.98]); % crop off the border
% split the two halves
A = im2gray(inpict(:,352+1:end,:)); % input
B = inpict(:,1:352,:); % output
% look at the hue of the output sample
[H,~,~] = rgb2hsv(B);
H = mod(H+0.2,1); % rotate to keep the red peak from wrapping across zero
imhist(H)
% split the histogram between the peaks
mkr = H < 0.25;
mkb = H > 0.80;
mkg = H > 0.45 & H < 0.6;
% sample the source in those regions
Ar = A(mkr);
Ag = A(mkg);
Ab = A(mkb);
subplot(3,1,1), imhist(Ar)
subplot(3,1,2), imhist(Ag)
subplot(3,1,3), imhist(Ab)
% the bins actually overlap quite a bit
% we don't know if that's due to scaling/registration errors
% or whether the classification is done differently
levels = [90 180]; % pick some bin edges
CT = [0 0 1; 0 1 0; 1 0 0]; % a color table
indpict = imquantize(A,levels); % an indexed image
figure
imshow(indpict,CT) % show it

제품

릴리스

R2024a

질문:

2024년 4월 19일

댓글:

DGM
2024년 4월 21일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by