Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
52
Task/Bitmap-Histogram/Octave/bitmap-histogram.octave
Normal file
52
Task/Bitmap-Histogram/Octave/bitmap-histogram.octave
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
function h = imagehistogram(imago)
|
||||
if ( isgray(imago) )
|
||||
for j = 0:255
|
||||
h(j+1) = numel(imago( imago == j ));
|
||||
endfor
|
||||
else
|
||||
error("histogram on gray img only");
|
||||
endif
|
||||
endfunction
|
||||
|
||||
% test
|
||||
im = jpgread("Lenna100.jpg");
|
||||
img = rgb2gray(im);
|
||||
h = imagehistogram(img);
|
||||
% let's try to show the histogram
|
||||
bar(h);
|
||||
pause;
|
||||
|
||||
% in order to obtain the requested filtering, we
|
||||
% can use median directly on the img, and then
|
||||
% use that value, this way:
|
||||
m = median(reshape(img, 1, numel(img)));
|
||||
disp(m);
|
||||
ibw = img;
|
||||
ibw( img > m ) = 255;
|
||||
ibw( img <= m ) = 0;
|
||||
jpgwrite("lennamed_.jpg", ibw, 100);
|
||||
% which disagree (128) with the m computed with histog_med (130).
|
||||
% If we compute it this way:
|
||||
% m = sort(reshape(img, 1, numel(img)))(ceil(numel(img)/2));
|
||||
% we obtain 130... but builtin median works as expected, since
|
||||
% N (number of pixel of Lenna) is even, not odd.
|
||||
|
||||
% but let's use our histogram h instead
|
||||
function m = histog_med(histog)
|
||||
from = 0; to = 255;
|
||||
left = histog(from + 1); right = histog(to+1);
|
||||
while ( from != to )
|
||||
if ( left < right )
|
||||
from++; left += histog(from+1);
|
||||
else
|
||||
to--; right += histog(to+1);
|
||||
endif
|
||||
endwhile
|
||||
m = from;
|
||||
endfunction
|
||||
|
||||
m = histog_med(h);
|
||||
disp(m);
|
||||
ibw( img > m ) = 255;
|
||||
ibw( img <= m ) = 0;
|
||||
jpgwrite("lennamed.jpg", ibw, 100);
|
||||
Loading…
Add table
Add a link
Reference in a new issue