Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
7
Task/Bitmap-Histogram/C/bitmap-histogram-1.c
Normal file
7
Task/Bitmap-Histogram/C/bitmap-histogram-1.c
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
typedef unsigned int histogram_t;
|
||||
typedef histogram_t *histogram;
|
||||
|
||||
#define GET_LUM(IMG, X, Y) ( (IMG)->buf[ (Y) * (IMG)->width + (X)][0] )
|
||||
|
||||
histogram get_histogram(grayimage im);
|
||||
luminance histogram_median(histogram h);
|
||||
20
Task/Bitmap-Histogram/C/bitmap-histogram-2.c
Normal file
20
Task/Bitmap-Histogram/C/bitmap-histogram-2.c
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
histogram get_histogram(grayimage im)
|
||||
{
|
||||
histogram t;
|
||||
unsigned int x, y;
|
||||
|
||||
if ( im == NULL ) return NULL;
|
||||
t = malloc( sizeof(histogram_t)*256 );
|
||||
memset(t, 0, sizeof(histogram_t)*256 );
|
||||
if (t!=NULL)
|
||||
{
|
||||
for(x=0; x < im->width; x++ )
|
||||
{
|
||||
for(y=0; y < im->height; y++ )
|
||||
{
|
||||
t[ GET_LUM(im, x, y) ]++;
|
||||
}
|
||||
}
|
||||
}
|
||||
return t;
|
||||
}
|
||||
19
Task/Bitmap-Histogram/C/bitmap-histogram-3.c
Normal file
19
Task/Bitmap-Histogram/C/bitmap-histogram-3.c
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
luminance histogram_median(histogram h)
|
||||
{
|
||||
luminance From, To;
|
||||
unsigned int Left, Right;
|
||||
|
||||
From = 0; To = (1 << (8*sizeof(luminance)))-1;
|
||||
Left = h[From]; Right = h[To];
|
||||
|
||||
while( From != To )
|
||||
{
|
||||
if ( Left < Right )
|
||||
{
|
||||
From++; Left += h[From];
|
||||
} else {
|
||||
To--; Right += h[To];
|
||||
}
|
||||
}
|
||||
return From;
|
||||
}
|
||||
50
Task/Bitmap-Histogram/C/bitmap-histogram-4.c
Normal file
50
Task/Bitmap-Histogram/C/bitmap-histogram-4.c
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include "imglib.h"
|
||||
|
||||
/* usage example */
|
||||
|
||||
#define BLACK 0,0,0
|
||||
#define WHITE 255,255,255
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
image color_img;
|
||||
grayimage g_img;
|
||||
histogram h;
|
||||
luminance T;
|
||||
unsigned int x, y;
|
||||
|
||||
if ( argc < 2 )
|
||||
{
|
||||
fprintf(stderr, "histogram FILE\n");
|
||||
exit(1);
|
||||
}
|
||||
color_img = read_image(argv[1]);
|
||||
if ( color_img == NULL ) exit(1);
|
||||
g_img = tograyscale(color_img);
|
||||
h = get_histogram(g_img);
|
||||
if ( h != NULL )
|
||||
{
|
||||
T = histogram_median(h);
|
||||
|
||||
for(x=0; x < g_img->width; x++)
|
||||
{
|
||||
for(y=0; y < g_img->height; y++)
|
||||
{
|
||||
if ( GET_LUM(g_img,x,y) < T )
|
||||
{
|
||||
put_pixel_unsafe(color_img, x, y, BLACK);
|
||||
} else {
|
||||
put_pixel_unsafe(color_img, x, y, WHITE);
|
||||
}
|
||||
}
|
||||
}
|
||||
output_ppm(stdout, color_img);
|
||||
/* print_jpg(color_img, 90); */
|
||||
free(h);
|
||||
}
|
||||
|
||||
free_img((image)g_img);
|
||||
free_img(color_img);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue