Multilevel image thresholding combining distinct colors

3 visualizaciones (últimos 30 días)
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 comentarios
KALYAN ACHARJYA
KALYAN ACHARJYA el 31 de Oct. de 2019
Editada: KALYAN ACHARJYA el 2 de Nov. de 2019
There are distinct difference between those two labels in the circles (2nd Image).
Kasthuri Kannan
Kasthuri Kannan el 31 de Oct. de 2019
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.

Iniciar sesión para comentar.

Respuesta aceptada

Kritika Bansal
Kritika Bansal el 6 de Nov. de 2019
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

Más respuestas (0)

Community Treasure Hunt

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

Start Hunting!

Translated by