forked from tTh/FloatImg
		
	dicom boilerplate: [done]
This commit is contained in:
		
							parent
							
								
									99187104ce
								
							
						
					
					
						commit
						6e896ee463
					
				| @ -4,7 +4,7 @@ | |||||||
|  *	http://la.buvette.org/photos/cumul
 |  *	http://la.buvette.org/photos/cumul
 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| #define		FIMG_VERSION	161 | #define		FIMG_VERSION	163 | ||||||
| 
 | 
 | ||||||
| /*
 | /*
 | ||||||
|  *	in memory descriptor |  *	in memory descriptor | ||||||
| @ -53,6 +53,7 @@ typedef struct { | |||||||
| #define FILE_TYPE_FITS			6 | #define FILE_TYPE_FITS			6 | ||||||
| #define FILE_TYPE_BMP			7 | #define FILE_TYPE_BMP			7 | ||||||
| #define FILE_TYPE_EXR			8 | #define FILE_TYPE_EXR			8 | ||||||
|  | #define FILE_TYPE_DICOM			9 | ||||||
| 
 | 
 | ||||||
| /*	lib/contrast.c			*/ | /*	lib/contrast.c			*/ | ||||||
| #define CONTRAST_NONE			0 | #define CONTRAST_NONE			0 | ||||||
| @ -142,6 +143,9 @@ int fimg_killrgb_v(FloatImg *src, FloatImg *dst, int k); | |||||||
| int fimg_decomp_rgbz_color(FloatImg *psrc, FloatImg *pdst, int k); | int fimg_decomp_rgbz_color(FloatImg *psrc, FloatImg *pdst, int k); | ||||||
| int fimg_decomp_rgbz_gray(FloatImg *psrc, FloatImg *pdst, int k); | int fimg_decomp_rgbz_gray(FloatImg *psrc, FloatImg *pdst, int k); | ||||||
| 
 | 
 | ||||||
|  | int fimg_save_plane_as_dicom(FloatImg *src, char *outname, | ||||||
|  | 						char plane, int flags); | ||||||
|  | 
 | ||||||
| /* universal exporter XXX */ | /* universal exporter XXX */ | ||||||
| int fimg_export_picture(FloatImg *pic, char *fname, int flags); | int fimg_export_picture(FloatImg *pic, char *fname, int flags); | ||||||
| 
 | 
 | ||||||
| @ -242,6 +246,8 @@ int   fimg_multirandom(FloatImg *fimg, long nbpass); | |||||||
| 
 | 
 | ||||||
| /*	file is 'funcs/utils.c'		*/ | /*	file is 'funcs/utils.c'		*/ | ||||||
| void fimg_print_minmax(float minmax[6], char *titre); | void fimg_print_minmax(float minmax[6], char *titre); | ||||||
|  | float *charplane2int(char plane, FloatImg *img); | ||||||
|  | 
 | ||||||
| int parse_WxH(char *str, int *pw, int *ph); | int parse_WxH(char *str, int *pw, int *ph); | ||||||
| int parse_double(char *str, double *dptr); | int parse_double(char *str, double *dptr); | ||||||
| int irand2(int offset, int modulo); | int irand2(int offset, int modulo); | ||||||
|  | |||||||
| @ -11,6 +11,7 @@ OBJS = fimg-png.o fimg-tiff.o misc-plots.o filtrage.o utils.o	\ | |||||||
| 	sfx0.o sfx1.o sfx2.o sfx3.o sfx4.o			\
 | 	sfx0.o sfx1.o sfx2.o sfx3.o sfx4.o			\
 | ||||||
| 	geometry.o rotate.o fimg-openexr.o			\
 | 	geometry.o rotate.o fimg-openexr.o			\
 | ||||||
| 	equalize.o fimg-fits.o saturation.o histogram.o		\
 | 	equalize.o fimg-fits.o saturation.o histogram.o		\
 | ||||||
|  | 	fimg-dicom.o						\
 | ||||||
| 	hsv.o classif.o contour2x2.o qsortrgb.o exporter.o	\
 | 	hsv.o classif.o contour2x2.o qsortrgb.o exporter.o	\
 | ||||||
| 	displacement.o dithering.o plasmas.o incrustator.o	\
 | 	displacement.o dithering.o plasmas.o incrustator.o	\
 | ||||||
| 	killrgb.o recurse.o pixelize.o decomprgb.o | 	killrgb.o recurse.o pixelize.o decomprgb.o | ||||||
| @ -70,6 +71,9 @@ fimg-tiff.o:		fimg-tiff.c $(DEPS) | |||||||
| fimg-openexr.o:		fimg-openexr.c $(DEPS) | fimg-openexr.o:		fimg-openexr.c $(DEPS) | ||||||
| 	gcc $(COPT) -c $< | 	gcc $(COPT) -c $< | ||||||
| 
 | 
 | ||||||
|  | fimg-dicom.o:		fimg-dicom.c $(DEPS) | ||||||
|  | 	gcc $(COPT) -c $< | ||||||
|  | 
 | ||||||
| fimg-fits.o:		fimg-fits.c $(DEPS) | fimg-fits.o:		fimg-fits.c $(DEPS) | ||||||
| 	gcc $(COPT) -I/usr/include/cfitsio/ -c $< | 	gcc $(COPT) -I/usr/include/cfitsio/ -c $< | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -0,0 +1,32 @@ | |||||||
|  | /*
 | ||||||
|  |       Digital Imaging and Communications in Medicine | ||||||
|  | 
 | ||||||
|  |  nouveau Fri 26 Nov 2021 11:12:44 PM CET - allée de Dinan | ||||||
|  | 
 | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #include  <stdio.h> | ||||||
|  | #include  <stdint.h> | ||||||
|  | 
 | ||||||
|  | #include  "../floatimg.h" | ||||||
|  | 
 | ||||||
|  | extern int verbosity;		/* must be declared around main() */ | ||||||
|  | 
 | ||||||
|  | /* --------------------------------------------------------------------- */ | ||||||
|  | int fimg_save_plane_as_dicom(FloatImg *src, char *outname, | ||||||
|  | 						char plane, int flags) | ||||||
|  | { | ||||||
|  | int		foo; | ||||||
|  | float		*planeptr; | ||||||
|  | 
 | ||||||
|  | fprintf(stderr, ">>> %s ( %p %s %c %d )\n", __func__, src, outname, plane, flags); | ||||||
|  | 
 | ||||||
|  | planeptr = charplane2int(plane, src); | ||||||
|  | 
 | ||||||
|  | if (verbosity) { | ||||||
|  | 	fimg_describe(src, outname); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | return -1; | ||||||
|  | } | ||||||
|  | /* --------------------------------------------------------------------- */ | ||||||
| @ -25,7 +25,7 @@ enum nCmd { Equalize=1, Rotate, Sfx0, F3x3, MIRE, Wfits, Wpng, Wtiff, | |||||||
| 			Displace, ReadPNG, Plasmas, Hilight, OpenEXR, | 			Displace, ReadPNG, Plasmas, Hilight, OpenEXR, | ||||||
| 			Geometrie, FileType, Mirror, KillRGB, | 			Geometrie, FileType, Mirror, KillRGB, | ||||||
| 			Pixelize,SplitLevel, DecompRgbz, DecompRgbg, | 			Pixelize,SplitLevel, DecompRgbz, DecompRgbg, | ||||||
| 			Rectangle  }; | 			Rectangle, Dicom  }; | ||||||
| typedef struct { | typedef struct { | ||||||
| 	char	*name; | 	char	*name; | ||||||
| 	int	Cmd; | 	int	Cmd; | ||||||
| @ -59,6 +59,7 @@ Command commands[] = { | |||||||
| 	{ "decomprgbz",	DecompRgbz	}, | 	{ "decomprgbz",	DecompRgbz	}, | ||||||
| 	{ "decomprgbg",	DecompRgbg	}, | 	{ "decomprgbg",	DecompRgbg	}, | ||||||
| 	{ "rectangle",  Rectangle	}, | 	{ "rectangle",  Rectangle	}, | ||||||
|  | 	{ "dicom",      Dicom		}, | ||||||
| 	{ NULL,		0		} | 	{ NULL,		0		} | ||||||
| 	} ; | 	} ; | ||||||
| 
 | 
 | ||||||
| @ -242,6 +243,9 @@ switch(opt) { | |||||||
| 	case Rectangle: | 	case Rectangle: | ||||||
| 		essai_rectangle(outfile, 0); | 		essai_rectangle(outfile, 0); | ||||||
| 		break; | 		break; | ||||||
|  | 	case Dicom: | ||||||
|  | 		foo = essai_dicom(filename, outfile, 0); | ||||||
|  | 		break; | ||||||
| 
 | 
 | ||||||
| 	default: | 	default: | ||||||
| 		fprintf(stderr, "'%s' is a bad command\n", command); | 		fprintf(stderr, "'%s' is a bad command\n", command); | ||||||
|  | |||||||
| @ -17,6 +17,23 @@ | |||||||
| 
 | 
 | ||||||
| extern int		verbosity; | extern int		verbosity; | ||||||
| 
 | 
 | ||||||
|  | /* --------------------------------------------------------------------- */ | ||||||
|  | /* --------------------------------------------------------------------- */ | ||||||
|  | int essai_dicom(char *inf, char *outf, int k) | ||||||
|  | { | ||||||
|  | int		foo; | ||||||
|  | FloatImg	img; | ||||||
|  | 
 | ||||||
|  | fprintf(stderr, ">>> %s ( %s %s %d )\n", __func__, inf, outf, k); | ||||||
|  | 
 | ||||||
|  | foo = fimg_create(&img, 320, 240, FIMG_TYPE_RGB); | ||||||
|  | fimg_drand48(&img, 1.0); | ||||||
|  | 
 | ||||||
|  | foo = fimg_save_plane_as_dicom(&img, outf, 'R', 0); | ||||||
|  | fprintf(stderr, "dicom: save a plane --> %d\n", foo); | ||||||
|  | 
 | ||||||
|  | return -1; | ||||||
|  | } | ||||||
| /* --------------------------------------------------------------------- */ | /* --------------------------------------------------------------------- */ | ||||||
| int essai_rectangle(char *outf, int k) | int essai_rectangle(char *outf, int k) | ||||||
| { | { | ||||||
|  | |||||||
| @ -37,3 +37,5 @@ int essai_openexr(char *inf, char *outf, int flags); | |||||||
| int essai_pixelize(char *infile, char *outfile); | int essai_pixelize(char *infile, char *outfile); | ||||||
| 
 | 
 | ||||||
| int essai_rectangle(char *outf, int k); | int essai_rectangle(char *outf, int k); | ||||||
|  | 
 | ||||||
|  | int essai_dicom(char *inf, char *outf, int k); | ||||||
|  | |||||||
| @ -21,6 +21,30 @@ fprintf(stderr, "green\t\t%10f   %10f\n", minmax[2], minmax[3]); | |||||||
| fprintf(stderr, "blue\t\t%10f   %10f\n",  minmax[4], minmax[5]); | fprintf(stderr, "blue\t\t%10f   %10f\n",  minmax[4], minmax[5]); | ||||||
| } | } | ||||||
| /* --------------------------------------------------------------------- */ | /* --------------------------------------------------------------------- */ | ||||||
|  | /* used in fimg-fits & fimg-dicom */ | ||||||
|  | float *charplane2int(char plane, FloatImg *img) | ||||||
|  | { | ||||||
|  | float		*pplane = NULL; | ||||||
|  | 
 | ||||||
|  | fprintf(stderr, "get plane for '%c' in %p ", plane, img); | ||||||
|  | 
 | ||||||
|  | switch (plane) { | ||||||
|  | 	case 'r':	case 'R': | ||||||
|  | 		pplane = img->R;		break; | ||||||
|  | 	case 'g':	case 'G': | ||||||
|  | 		pplane = img->G;		break; | ||||||
|  | 	case 'b':	case 'B': | ||||||
|  | 		pplane = img->B;		break; | ||||||
|  | 
 | ||||||
|  | 	default: | ||||||
|  | 		pplane = NULL; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | fprintf(stderr, "give me %p\n", pplane); | ||||||
|  | 
 | ||||||
|  | return pplane; | ||||||
|  | } | ||||||
|  | /* --------------------------------------------------------------------- */ | ||||||
| int parse_WxH(char *str, int *pw, int *ph) | int parse_WxH(char *str, int *pw, int *ph) | ||||||
| { | { | ||||||
| // char			*ptr;
 | // char			*ptr;
 | ||||||
| @ -75,6 +99,7 @@ if (!strcasecmp(name, "tiff"))	return FILE_TYPE_TIFF; | |||||||
| if (!strcasecmp(name, "tif" ))		return FILE_TYPE_TIFF; | if (!strcasecmp(name, "tif" ))		return FILE_TYPE_TIFF; | ||||||
| if (!strcasecmp(name, "fits"))		return FILE_TYPE_FITS; | if (!strcasecmp(name, "fits"))		return FILE_TYPE_FITS; | ||||||
| if (!strcasecmp(name, "exr"))		return FILE_TYPE_EXR; | if (!strcasecmp(name, "exr"))		return FILE_TYPE_EXR; | ||||||
|  | if (!strcasecmp(name, "dicom"))		return FILE_TYPE_EXR; | ||||||
| 
 | 
 | ||||||
| return -1; | return -1; | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 tth
						tth