Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

how to plot histogram in 12-bit from an 16-bit image?

276 views
Skip to first unread message

Dalle Ali

unread,
Jun 5, 2010, 9:26:04 AM6/5/10
to
hi guys,

so in my university project, i need to plot a histogram in 12-bit portrayal (the x-axis is from 0 - 4096 gray values) from an 16-bit image.. with software ImageJ i could do that with no problem at all, i just need to divide the image with 16 (16bit / 16 = 12bit, 65536/16 = 4096) and then i just call the histogram... i wish i could show you how it looks like, but there's no option here to attach something..

in matlab i've written this code:

f = imread('D:\.....\20091007080643421.tif');
imhist(f), ylim([0,21000]); %figure 1
g = imdivide(f,16);
figure, imhist(g), ylim([0,21000]); %figure 2
figure, imhist(g), ylim([0,21000]), xlim([0,4096]); %figure 3 is the same as figure 2, with different scale

but it looks completely different from with what i've done in ImageJ... but i really need to make this in matlab for this project..
can somebody please help me..?

cheers,
Dalle

ImageAnalyst

unread,
Jun 5, 2010, 10:50:45 AM6/5/10
to
Dalle:
fromt he help: "imhist(I, n) displays a histogram where n specifies
the number of bins used in the histogram. "

Run this demo and you'll understand:

clc; % Clear the command window.
close all; % Close all figures (except those of imtool.)
imtool close all; % Close all imtool figures.
clear; % Erase all existing variables.
workspace; % Make sure the workspace panel is showing.
fontSize = 20;

% Change the current folder to the folder of this m-file.
if(~isdeployed)
cd(fileparts(which(mfilename)));
end

% Read in standard MATLAB grayscale demo image.
grayImage = imread('cameraman.tif');
subplot(2, 2, 1);
imshow(grayImage, []);
title('Original Grayscale Image');
set(gcf, 'Position', get(0,'Screensize')); % Enlarge figure to full
screen.

% Let's get its histogram.
[pixelCount grayLevels] = imhist(grayImage);
subplot(2, 2, 2);
bar(pixelCount);
title('Histogram of original image');
xlim([0 grayLevels(end)]); % Scale x axis manually.

% Convert to a 16 bit image
grayImage16 = 256 * uint16(grayImage);

% Let's get its 16 bit histogram.
numberOfBins16 = double(intmax('uint16'));
[pixelCount16 grayLevels16] = imhist(grayImage16, numberOfBins16);
subplot(2, 2, 3);
bar(grayLevels16, pixelCount16);
title('Histogram of 16 bit image');
xlim([0 grayLevels16(end)]); % Scale x axis manually.

% Convert 16 bit image to a 12 bit image.
grayImage12 = uint16(grayImage16 / 16);
numberOfBins12 = round(numberOfBins16 / 16);

% Let's get its 12 bit histogram.
[pixelCount12 grayLevels12] = imhist(grayImage12, numberOfBins12);
subplot(2, 2, 4);
bar(grayLevels12, pixelCount12);
title('Histogram of 12 bit image');
xlim([0 grayLevels12(end)/16]); % Scale x axis manually.

Dalle Ali

unread,
Jun 5, 2010, 11:10:05 AM6/5/10
to
ImageAnalyst <imagea...@mailinator.com> wrote in message <b791d49b-0a72-4d0d...@d37g2000yqm.googlegroups.com>...

my god... you're really a genius aren't you :D
thx so much ImageAnalyst, that's really make my life easier now, hehehe..
again thx a bunch!

0 new messages