Multilevel image thresholding combining distinct colors
2 ビュー (過去 30 日間)
古いコメントを表示
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
2019 年 10 月 31 日
編集済み: KALYAN ACHARJYA
2019 年 11 月 2 日
There are distinct difference between those two labels in the circles (2nd Image).
採用された回答
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.
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!