How does multithresh and imquantize works

4 views (last 30 days)
Adrian Lim
Adrian Lim on 17 Jul 2018
Answered: Ayush Aniket on 29 Jan 2025 at 11:25
Can anyone explain about multithresh and imquantize? I've read the documentation regarding it but I don't really understand how does it works and how do they relate to each other.
If i have a thresh = multithresh(A,4) Does it means that it returns 4 threshold values from the image? How does the system decides which values to return? And we have imquantize(A,thresh). What would happen?

Answers (1)

Ayush Aniket
Ayush Aniket on 29 Jan 2025 at 11:25
In MATLAB, multithresh is used to compute multiple threshold values for image segmentation. It is an extension of Otsu's method, which is used for finding a single threshold that separates the pixels into two classes. multithresh generalizes this to find multiple thresholds for segmenting an image into more than two classes. The function divides the pixel intensity range of the image into N+1 classes by finding N thresholds that minimize the intra-class variance (or equivalently, maximize the inter-class variance). This is based on the histogram of the image intensities. Refer to the following documentation section to read about the process: https://www.mathworks.com/help/images/ref/multithresh.html#btj8y4v-N
On the other hand, imquantize is used to quantize an image based on specified threshold values. It assigns each pixel in the image to a class based on the computed thresholds. When you apply imquantize(A, thresh), it segments the image A into N+1 regions, where N is the number of thresholds. Each region is assigned a unique integer label, effectively quantizing the image into discrete levels.
The following code snippet will help you understand the workflow better:
imageURL = 'https://www.mathworks.com/company/technical-articles/the-mathworks-logo-is-an-eigenfunction-of-the-wave-equation/_jcr_content/mainParsys/image_2.adapt.full.medium.gif/1469941373397.gif';
A = imread(imageURL); % Load your image
imshow(A)
title("Original Image")
thresh = multithresh(A, 4); % Compute 4 threshold values
quantizedImage = imquantize(A, thresh); % Quantize the image using the thresholds
labelsRGB = label2rgb(quantizedImage);
imshow(labelsRGB)
title("Segmented Image"

Categories

Find more on Images in Help Center and File Exchange

Products


Release

R2017a

Community Treasure Hunt

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

Start Hunting!