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
  2 件のコメント
Kasthuri Kannan
Kasthuri Kannan 2019 年 11 月 8 日
Thanks. I think the R2019b solves this -
KALYAN ACHARJYA
KALYAN ACHARJYA 2019 年 11 月 8 日
+1
Truly

サインインしてコメントする。

その他の回答 (0 件)

Community Treasure Hunt

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

Start Hunting!

Translated by