Multilevel image thresholding combining distinct colors

조회 수: 2 (최근 30일)
Kasthuri Kannan
Kasthuri Kannan 2019년 10월 30일
댓글: KALYAN ACHARJYA 2019년 11월 8일
I am trying to segment an image. It has 8 distinct colors (regions) excluding the background white. I am using multilevel thresholding with 8 levels out of which 6 regions are segmented properly. However, the method combines two regions which is highlighted in circles. Clearly, the grayscale image (middle) also shows the difference for this region. I am not sure how to get this regions segmented along with the rest of the regions. Any help will be much appreciated. I am also reproducing the code below.
% Read the image and convert into grayscale
I = imread(filepath)
I = rgb2gray(I);
% Define thresholds for the 8 distinct regions excluding the white background
thresh = multithresh(I,8)
% Segment the image and display
seg_I = imquantize(I,thresh);
imshow(seg_I == 6)
  댓글 수: 2
KALYAN ACHARJYA
KALYAN ACHARJYA 2019년 10월 31일
편집: KALYAN ACHARJYA 2019년 11월 2일
There are distinct difference between those two labels in the circles (2nd Image).
Kasthuri Kannan
Kasthuri Kannan 2019년 10월 31일
Yes, there is - actually I managed to find out the actual gray level for those regions and used the values to segment them, instead of the method to automatically determine them.

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

채택된 답변

Kritika Bansal
Kritika Bansal 2019년 11월 6일
Hi,
I tried replicating the issue on my end, but the output comes out to be correct in my case when I ran the following commands on MATLAB Online R2019b.
These are the commands I used:
clear all; clc;
I=imread('input.png');
imshow(I);
I = rgb2gray(I);
% Define thresholds for the 8 distinct regions excluding the white background
[thresh, metric] = multithresh(I,8)
% Segment the image and display
seg_I = imquantize(I,thresh);
figure, imshow(seg_I, []);
figure, imshow(label2rgb(seg_I));
Following is the output:
thresh =
1×8 uint8 row vector
23 61 90 116 146 168 182 219
metric =
0.9982
I am also attaching the input and output images for your reference.
input.png
seg_I.png
label2rgbOutput.png

추가 답변 (0개)

Community Treasure Hunt

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

Start Hunting!

Translated by