About quantization of image

25 Ansichten (letzte 30 Tage)
sweta arya
sweta arya am 27 Jun. 2015
Beantwortet: Ashish Uthama am 29 Jun. 2015
i am trying to do uniform quantization on a gray scale image. i have to generate different images matrix for different K levels using imquantize() function and display all images. please let me know how to do that in MATLAB
  2 Kommentare
Geoff Hayes
Geoff Hayes am 27 Jun. 2015
sweta - have you looked at the examples from imquantize?
sweta arya
sweta arya am 28 Jun. 2015
yes,they only display images like one image for 256 level,then one for 16 levels.but i want images for all 16 levels,if my image is quantizing to 16 levels.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Image Analyst
Image Analyst am 28 Jun. 2015
Put it in a for loop
grayImage = imread('coins.png');
% Split the image into eight levels by obtaining seven thresholds from multithresh.
for numLevels = 1 : 16
thresh = multithresh(grayImage, numLevels);
% Construct the valuesMax vector such that the maximum value
% in each quantization interval is assigned to the eight levels of the output image.
valuesMax = [thresh max(grayImage(:))]
[quant8_I_max, index] = imquantize(grayImage,thresh,valuesMax);
valuesMin = [min(grayImage(:)) thresh]
quant8_I_min = valuesMin(index);
% Display both eight-level output images side by side.
figure;
imshowpair(quant8_I_min,quant8_I_max,'montage')
title('Minimum Interval Value Maximum Interval Value')
% Set up figure properties:
% Enlarge figure to full screen.
set(gcf, 'Units', 'Normalized', 'OuterPosition', [0 0 1 1]);
% Get rid of tool bar and pulldown menus that are along top of figure.
set(gcf, 'Toolbar', 'none', 'Menu', 'none');
% Give a name to the title bar.
set(gcf, 'Name', 'Demo by ImageAnalyst', 'NumberTitle', 'Off')
end

Weitere Antworten (1)

Ashish Uthama
Ashish Uthama am 29 Jun. 2015
"i want images for all 16 levels"
I interpreted it as - quantize to 16 levels and give me a mask for each of those levels. (Though, now I think IA's answer above might be what you were looking for).
im = magic(5);
lvls = multithresh(im,3);
qm = imquantize(im,lvls)
qm =
3 4 1 2 3
4 1 1 3 3
1 1 2 4 4
2 2 4 4 1
2 3 4 1 2
imlvl1 = false(size(im));
% Replace 1 with any of the resulting 4 levels
imlvl1(qm==1)= true
imlvl1 =
0 0 1 0 0
0 1 1 0 0
1 1 0 0 0
0 0 0 0 1
0 0 0 1 0

Community Treasure Hunt

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

Start Hunting!

Translated by