Compare commits

...

5 Commits

123 changed files with 445 additions and 361 deletions

115
.gitignore vendored
View File

@ -1,19 +1,18 @@
lib/*.o build
lib/t
lib/*.fimg
lib/*.png
lib/*.gif
# src/lib/*.o
src/lib/t
src/lib/*.fimg
src/lib/*.png
src/lib/*.gif
*.o
*.a *.a
gmon.out gmon.out
*.pnm *.pnm
*.fimg *.fimg
essai
MANIFEST
tarball
*/*.ps */*.ps
doc/*.toc doc/*.toc
@ -26,62 +25,62 @@ doc/*.ind
doc/co*.tex doc/co*.tex
doc/foo.html doc/foo.html
funcs/t src/funcs/t
funcs/*.o src/funcs/*.o
funcs/*.png src/funcs/*.png
funcs/V/* src/funcs/V/*
funcs/*.gif src/src/funcs/*.gif
funcs/*.fits src/funcs/*.fits
funcs/*.tiff src/funcs/*.tiff
funcs/toto src/funcs/toto
scripts/*.fimg scripts/*.fimg
scripts/*.pnm scripts/*.pnm
scripts/*.gif scripts/*.gif
v4l2/t src/v4l2/t
v4l2/capture src/v4l2/capture
v4l2/grabvidseq src/v4l2/grabvidseq
v4l2/*.o src/v4l2/*.o
v4l2/*.ppm src/v4l2/*.ppm
v4l2/*.png src/v4l2/*.png
v4l2/*.fits src/v4l2/*.fits
v4l2/*.tiff src/v4l2/*.tiff
v4l2/video-infos src/v4l2/video-infos
v4l2/nc-camcontrol src/v4l2/nc-camcontrol
tools/fimg2png # tools/fimg2png
tools/fimg2pnm # tools/fimg2pnm
tools/fimg2tiff # tools/fimg2tiff
tools/fimg2fits # tools/fimg2fits
tools/fimg2text # tools/fimg2text
tools/fimgstats # tools/fimgstats
tools/fimghalfsize # tools/fimghalfsize
tools/mkfimg # tools/mkfimg
tools/png2fimg # tools/png2fimg
tools/addtga2fimg # tools/addtga2fimg
tools/addpnm2fimg # tools/addpnm2fimg
tools/cumulfimgs # tools/cumulfimgs
tools/fimgops # tools/fimgops
tools/fimgfx # tools/fimgfx
tools/*.png src/tools/*.png
tools/*.tiff src/tools/*.tiff
Fonderie/*.o extras/Fonderie/*.o
Fonderie/*.png extras/Fonderie/*.png
Fonderie/*.pnm extras/Fonderie/*.pnm
Fonderie/*.gif extras/Fonderie/*.gif
Fonderie/*.fimg extras/Fonderie/*.fimg
Fonderie/fonderie extras/extras/Fonderie/fonderie
Fonderie/interpolator extras/Fonderie/interpolator
Fonderie/t extras/Fonderie/t
Fonderie/singlepass extras/Fonderie/singlepass
Fonderie/crapdef.h extras/Fonderie/crapdef.h
Fonderie/crapstr.h extras/Fonderie/crapstr.h
experiment/assemblage extras/experiment/assemblage
experiment/extracteur extras/experiment/extracteur
experiment/*.fimg extras/experiment/*.fimg
experiment/*.pnm extras/experiment/*.pnm
experiment/*.o extras/experiment/*.o

View File

@ -1,6 +0,0 @@
#
# This file is the 'grandmasta' of the compilation process.
# for now, this is juste a wip idea.
#

View File

@ -1,34 +1,77 @@
#################################################### # CC_OPTS = -Wall -fpic -g -pg -no-pie -DDEBUG_LEVEL=0
# Before running make, you must have # # LD_OPTS = libfloatimg.a -pg -lm
# a look to the 'build.sh' script ! #
####################################################
COPT = -Wall -fpic -g -pg -no-pie -DDEBUG_LEVEL=0 LIB_DIR = build/lib
LDOPT = libfloatimg.a -pg -lm
all: essai OBJ_DIR = build/obj
#--------------------------------------------------------------- STATIC_LIB = $(LIB_DIR)/libfloatimg-lib.a
essai: essai.c libfloatimg.a floatimg.h Makefile DYN_LIB = $(LIB_DIR)/libfloatimg.so
gcc $(COPT) $< $(LDOPT) -lpnglite -lz -o $@
#--------------------------------------------------------------- VERBOSITY = 0
TOTAR = *.[ch] Makefile *.sh *.md \ all: lib funcs tools v4l2
doc/the*.tex doc/mk*.sh doc/*.txt \
funcs/*.[ch] funcs/Makefile \
tools/*.[ch] tools/*.sh tools/README.md tools/Makefile \
v4l2/*.[ch] v4l2/Makefile \
scripts/*.sh scripts/README.md \
lib/*.[ch] lib/Makefile
lines: $(TOTAR) # shared: $(DYN_LIB)
@wc $(TOTAR) | sort -n
tarball: $(TOTAR) # $(DYN_LIB): lib funcs
date > tarball
ls $(TOTAR) | sed 's/^/FloatImg\//' > MANIFEST lib:
( cd .. ; tar zcvf floatimg.tar.gz `cat FloatImg/MANIFEST` ) $(MAKE) -C src/lib all
funcs: lib
$(MAKE) -C src/funcs
# link lib & funcs for shared library
echo "int verbosity = $(VERBOSITY);" > $(OBJ_DIR)/verbosity.c
gcc -c $(OBJ_DIR)/verbosity.c -o $(OBJ_DIR)/verbosity.o
gcc -shared $(OBJ_DIR)/*.o -lnetpbm -lpnglite -lcfitsio -ltiff -lz -lm -o $(DYN_LIB)
tools: lib
mkdir -p build/bin
$(MAKE) -C src/tools
v4l2:
mkdir -p build/bin
$(MAKE) -C src/v4l2
clean:
$(MAKE) -C src/lib clean
$(MAKE) -C src/funcs clean
$(MAKE) -C src/tools clean
$(MAKE) -C src/v4l2 clean
rm -rf "./build"
install: all
cp src/floatimg.h /usr/local/include
cp build/lib/* /usr/local/lib
cp build/bin/* /usr/local/bin
# all: essai
# #---------------------------------------------------------------
# essai: essai.c libfloatimg.a floatimg.h Makefile
# gcc $(COPT) $< $(LDOPT) -lpnglite -lz -o $@
# #---------------------------------------------------------------
# TOTAR = *.[ch] Makefile *.sh *.md \
# doc/the*.tex doc/mk*.sh doc/*.txt \
# funcs/*.[ch] funcs/Makefile \
# tools/*.[ch] tools/*.sh tools/README.md tools/Makefile \
# v4l2/*.[ch] v4l2/Makefile \
# scripts/*.sh scripts/README.md \
# lib/*.[ch] lib/Makefile
# lines: $(TOTAR)
# @wc $(TOTAR) | sort -n
# tarball: $(TOTAR)
# date > tarball
# ls $(TOTAR) | sed 's/^/FloatImg\//' > MANIFEST
# ( cd .. ; tar zcvf floatimg.tar.gz `cat FloatImg/MANIFEST` )
# #---------------------------------------------------------------
#---------------------------------------------------------------

View File

@ -1,3 +1,14 @@
# FloatImg4PythonBinding
Un fork de la galactique bibliothèque FloatImg de tTh, réaménagé pour permettre une utilisation depuis Python avec l'embryonnaire binding https://git.tetalab.org/Mutah/python-FloatImg/ (seulement sur la branche develop pour le moment)
Pas de révolution mais :
- production d'une bibliothèque partagée
- arborescence remanié : les meubles ont changés de place : les sources sont dans `src`, les expérimentations dans `extra` et les binaires sont produits dans `build`
- build system : un Makefile racine avec des cibles générales : `all` pour tout builder, `lib` pour la bibliothèque de base, `funcs`
# Traitement des images en virgule flottante. # Traitement des images en virgule flottante.
C'est d"abord un ensemble de fonctions pour traiter des images avec une énorme dynamique C'est d"abord un ensemble de fonctions pour traiter des images avec une énorme dynamique
@ -30,15 +41,17 @@ Bien entendu, avant tout, il faut installer quelques outils et
dépendances. Je vais tenter de les lister dans le plus grand dépendances. Je vais tenter de les lister dans le plus grand
désordre (à la sauce Debian) : désordre (à la sauce Debian) :
```bash
sudo apt install libtiff-dev libpnglite-dev liblo-dev libv4l2-dev libcfitsio-dev libnetpbm-dev
``` ```
apt install libtiff-dev
apt install libpnglite-dev Sauce Ubuntu :
apt install liblo-dev
apt install libv4l2-dev ```bash
apt install libcfitsio-dev sudo apt install libtiff-dev libpnglite-dev liblo-dev libv4l-dev libcfitsio-dev libnetpbm10-dev libncurses5-dev
apt install libnetpbm-dev
``` ```
Certains outils externes sont aussi utiles : Certains outils externes sont aussi utiles :
- gnuplot - gnuplot

View File

@ -1,39 +0,0 @@
#!/bin/bash
# ------------------------------------------------------------------
function build
{
echo ============= $1 ==============
curdir=${PWD}
cd $1
make
error=$?
cd ${curdir}
if [ ${error} -ne 0 ]
then
echo === error on $1 = ${error}
exit 1
fi
}
# ------------------------------------------------------------------
build lib
build funcs
build tools
build v4l2
build Fonderie
# ------------------------------------------------------------------
make
# ------------------------------------------------------------------

View File

@ -4,7 +4,7 @@
* http://la.buvette.org/photos/cumul * http://la.buvette.org/photos/cumul
*/ */
#define FIMG_VERSION 145 #define FIMG_VERSION 150
/* /*
* in memory descriptor * in memory descriptor
@ -26,7 +26,7 @@ typedef struct {
*/ */
typedef struct { typedef struct {
char magic[8]; char magic[8];
int w, h, t; int32_t w, h, t;
} FimgFileHead; } FimgFileHead;
#define MAGIC_AREA51 0xA5EA0051 #define MAGIC_AREA51 0xA5EA0051
@ -95,7 +95,6 @@ int fimg_mul_3(FloatImg *a, FloatImg *b, FloatImg *d);
int fimg_minimum(FloatImg *a, FloatImg *b, FloatImg *d); int fimg_minimum(FloatImg *a, FloatImg *b, FloatImg *d);
int fimg_maximum(FloatImg *a, FloatImg *b, FloatImg *d); int fimg_maximum(FloatImg *a, FloatImg *b, FloatImg *d);
/* funcs/filtrage.c */ /* funcs/filtrage.c */
typedef struct { typedef struct {
@ -124,6 +123,9 @@ int fimg_highlight_color(FloatImg *src, FloatImg *dst,
int fimg_binarize(FloatImg *pimg, int notused); int fimg_binarize(FloatImg *pimg, int notused);
int fimg_trinarize(FloatImg *pimg, int notused); int fimg_trinarize(FloatImg *pimg, int notused);
/* module sfx4.c */
int fimg_sfx_triplemul(FloatImg *s, FloatImg *d, int notused);
/* funcs/rotate.c module */ /* funcs/rotate.c module */
/* #coronamaison */ /* #coronamaison */
int fimg_rotate_90(FloatImg *src, FloatImg *dst, int notused); int fimg_rotate_90(FloatImg *src, FloatImg *dst, int notused);
@ -218,6 +220,7 @@ int fimg_save_as_bmp(FloatImg *src, char *outname, int flags);
int fimg_test_pattern(FloatImg *fimg, int type, double dval); int fimg_test_pattern(FloatImg *fimg, int type, double dval);
int fimg_draw_something(FloatImg *fimg); int fimg_draw_something(FloatImg *fimg);
int fimg_mircol_1(FloatImg *dst, float mval);
int fimg_multirandom(FloatImg *fimg, long nbpass); int fimg_multirandom(FloatImg *fimg, long nbpass);
/* file is 'funcs/utils.c' */ /* file is 'funcs/utils.c' */

View File

@ -2,18 +2,28 @@
# Please, use the 'Gloabl.makefile' system ! # Please, use the 'Gloabl.makefile' system !
LIB_DIR = ../../build/lib
OBJ_DIR = ../../build/obj
STATIC_LIB = $(LIB_DIR)/libfloatimg.a
DYN_OBJ = $(OBJ_DIR)/libfloatimg-funcs.o
COPT = -Wall -fpic -g -no-pie -DDEBUG_LEVEL=0 COPT = -Wall -fpic -g -no-pie -DDEBUG_LEVEL=0
DEPS = ../floatimg.h Makefile DEPS = ../floatimg.h Makefile
OBJS = fimg-png.o fimg-tiff.o misc-plots.o filtrage.o utils.o \ OBJS = fimg-png.o fimg-tiff.o misc-plots.o filtrage.o utils.o \
fimg-libpnm.o rampes.o sfx0.o sfx1.o sfx2.o \ fimg-libpnm.o rampes.o sfx0.o sfx1.o sfx2.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 \
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 \
recurse.o recurse.o
all: $(OBJS) $(STATIC_LIB) $(DYN_OBJ)
#--------------------------------------------------------------- #---------------------------------------------------------------
t: t.c $(DEPS) ../libfloatimg.a tests.o t: t.c $(DEPS) ../libfloatimg.a tests.o
@ -31,10 +41,16 @@ tests.o: tests.c tests.h $(DEPS)
#--------------------------------------------------------------- #---------------------------------------------------------------
# upper-level functions # upper-level functions
../libfloatimg.a: $(OBJS) $(STATIC_LIB): $(OBJS)
$(AR) r $@ $? $(AR) r $@ $?
# ###
$(DYN_OBJ): $(OBJS)
mkdir -p $(OBJ_DIR)
ld -Ur -o $@ $?
clean:
rm -rf $(OBJS) $(STATIC_LIB) $(DYN_OBJ)
recurse.o: recurse.c $(DEPS) recurse.o: recurse.c $(DEPS)
gcc $(COPT) -c $< gcc $(COPT) -c $<
@ -99,6 +115,9 @@ sfx1.o: sfx1.c $(DEPS)
sfx2.o: sfx2.c $(DEPS) sfx2.o: sfx2.c $(DEPS)
gcc $(COPT) -c $< gcc $(COPT) -c $<
sfx4.o: sfx4.c $(DEPS)
gcc $(COPT) -c $<
contour2x2.o: contour2x2.c $(DEPS) contour2x2.o: contour2x2.c $(DEPS)
gcc $(COPT) -c $< gcc $(COPT) -c $<

View File

@ -59,7 +59,7 @@ for (y=0; y<psrc->height; y++) {
fimg_get_rgb(psrc, x, y, rgb); fimg_get_rgb(psrc, x, y, rgb);
dispx = (float)x + (rgb[1]/dltg * 20.0); dispx = (float)x + (rgb[1]/dltg * 20.0);
dispy = (float)y + (rgb[2]/dltb * 10.0); dispy = (float)y + (rgb[2]/dltb * 20.0);
dstx = (int)roundf(dispx - 10.0); dstx = (int)roundf(dispx - 10.0);
dsty = (int)roundf(dispy - 10.0); dsty = (int)roundf(dispy - 10.0);

View File

@ -6,6 +6,7 @@
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <stdint.h>
#include "../floatimg.h" #include "../floatimg.h"

View File

@ -86,6 +86,24 @@ for (y=1; y<fimg->height; y++) {
return 0; return 0;
} }
/* --------------------------------------------------------------------- */ /* --------------------------------------------------------------------- */
int fimg_mircol_1(FloatImg *dst, float mval)
{
int x, y;
float fx, fy, rgb[3];
for (y=0; y<dst->height; y++) {
fy = (float)y / (float)dst->height;
for (x=0; x<dst->width; x++) {
fx = (float)x / (float)dst->width;
rgb[0] = mval * fx;
rgb[1] = mval * ((fx+fy)/2.0);
rgb[2] = mval * fy;
fimg_put_rgb(dst, x, y, rgb);
}
}
return -1;
}
/* --------------------------------------------------------------------- */
int fimg_multirandom(FloatImg *fimg, long nbpass) int fimg_multirandom(FloatImg *fimg, long nbpass)
{ {
int foo, x, y; int foo, x, y;

View File

@ -7,6 +7,7 @@
#include <stdio.h> #include <stdio.h>
#include <math.h> #include <math.h>
#include <stdint.h>
#include "../floatimg.h" #include "../floatimg.h"

View File

@ -4,6 +4,7 @@
*/ */
#include <stdio.h> #include <stdio.h>
#include <stdint.h>
#include "../floatimg.h" #include "../floatimg.h"

View File

@ -5,6 +5,7 @@
#include <stdio.h> #include <stdio.h>
#include <math.h> #include <math.h>
#include <stdint.h>
#include "../floatimg.h" #include "../floatimg.h"
@ -20,6 +21,8 @@ int fimg_recursion_proto(FloatImg *src, FloatImg *dst, int notused)
fprintf(stderr, ">>> %s ( %p %p %d )\n", __func__, src, dst, notused); fprintf(stderr, ">>> %s ( %p %p %d )\n", __func__, src, dst, notused);
#endif #endif
fprintf(stderr, "!!!!!! %s is a wip !!!!!\n", __func__);
return -1; return -1;
} }
/* -------------------------------------------------------------------- */ /* -------------------------------------------------------------------- */

View File

@ -6,6 +6,7 @@
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <stdint.h>
#include "../floatimg.h" #include "../floatimg.h"

View File

@ -3,6 +3,7 @@
*/ */
#include <stdio.h> #include <stdio.h>
#include <stdint.h>
#include "../floatimg.h" #include "../floatimg.h"
@ -99,7 +100,7 @@ coefs[0] = coefs[2] = coefs[4] = minima;
foo = fimg_shift_to_zero(src, dst, coefs); foo = fimg_shift_to_zero(src, dst, coefs);
if (foo) { if (foo) {
fprintf(stderr, "%s WTF?\n", __func__); fprintf(stderr, "%s WTF? %d\n", __func__, foo);
return foo; return foo;
} }

View File

@ -5,6 +5,7 @@
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <stdint.h>
#include "../floatimg.h" #include "../floatimg.h"

View File

@ -6,6 +6,7 @@
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <stdint.h>
#include "../floatimg.h" #include "../floatimg.h"

View File

@ -5,6 +5,7 @@
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <stdint.h>
#include "../floatimg.h" #include "../floatimg.h"

42
src/funcs/sfx4.c Normal file
View File

@ -0,0 +1,42 @@
/*
* FLOATIMG - a kluge from tTh
* ---------------------------
*
* some strange effects on floating pictures.
*/
#include <stdio.h>
#include <string.h>
#include <stdint.h>
#include "../floatimg.h"
extern int verbosity;
/* -------------------------------------------------------------- */
int fimg_sfx_triplemul(FloatImg *src, FloatImg *dst, int notused)
{
int x, y, foo;
float in[3], out[3];
#if DEBUG_LEVEL
fprintf(stderr, ">>> %s ( %p 0x%04x )\n", __func__, img, notused);
#endif
for (y=0; y<src->height; y++) {
for (x=0; x<src->width; x++) {
foo = fimg_get_rgb(src, x, y, in);
out[0] = in[1] * in[2];
out[1] = in[0] * in[2];
out[2] = in[0] * in[1];
// fprintf(stderr, "%9f %9f %9f\n", out[0], out[1], out[2]);
foo = fimg_put_rgb(dst, x, y, out);
}
}
return 0;
}
/* -------------------------------------------------------------- */
/* -------------------------------------------------------------- */

View File

@ -4,6 +4,7 @@
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <stdint.h>
#include "../floatimg.h" #include "../floatimg.h"

View File

@ -2,6 +2,14 @@
# building the base library # building the base library
# #
LIB_DIR = ../../build/lib
STATIC_LIB = $(LIB_DIR)/libfloatimg.a
OBJ_DIR = ../../build/obj
DYN_OBJ = $(OBJ_DIR)/libfloatimg-lib.o
COPT = -Wall -fpic -g -no-pie -DDEBUG_LEVEL=0 COPT = -Wall -fpic -g -no-pie -DDEBUG_LEVEL=0
OBJS = fimg-core.o fimg-pnm.o fimg-file.o fimg-math.o \ OBJS = fimg-core.o fimg-pnm.o fimg-file.o fimg-math.o \
@ -11,18 +19,26 @@ OBJS = fimg-core.o fimg-pnm.o fimg-file.o fimg-math.o \
DEPS = Makefile ../floatimg.h DEPS = Makefile ../floatimg.h
# modify it 'as you like' # modify it 'as you like'
AR=ar AR=ar
all: $(OBJS) ../libfloatimg.a all: $(OBJS) $(STATIC_LIB) $(DYN_OBJ)
t: t.c ../libfloatimg.a $(DEPS) # t: t.c ../libfloatimg.a $(DEPS)
gcc $(COPT) $< ../libfloatimg.a -lpnglite -lz -lm -o $@ # gcc $(COPT) $< ../libfloatimg.a -lpnglite -lz -lm -o $@
clean:
rm -rf $(OBJS) $(STATIC_LIB) $(DYN_OBJ)
# -------------------------------------------- # --------------------------------------------
../libfloatimg.a: $(OBJS) $(STATIC_LIB): $(OBJS)
mkdir -p $(LIB_DIR)
$(AR) r $@ $? $(AR) r $@ $?
$(DYN_OBJ): $(OBJS) # verbosity.o
mkdir -p $(OBJ_DIR)
ld -Ur -o $@ $?
fimg-core.o: fimg-core.c $(DEPS) fimg-core.o: fimg-core.c $(DEPS)
gcc $(COPT) -c $< gcc $(COPT) -c $<

View File

@ -1,5 +1,9 @@
/* /*
* contrast.c - part of libfloatimg * contrast.c - part of libfloatimg
* --------------------------------
*
* you can see some use in 'tools/fimgfx.c', so you can thing
* about the 'maxval' parameter. C'est touchy :)
*/ */
#include <stdio.h> #include <stdio.h>
@ -34,7 +38,7 @@ int nbre, idx;
double dval; double dval;
if (s->type != FIMG_TYPE_RGB) { if (s->type != FIMG_TYPE_RGB) {
fprintf(stderr, "%s : type %d invalide\n", fprintf(stderr, "%s: type %d invalide\n",
__func__, s->type); __func__, s->type);
return -4; return -4;
} }
@ -42,13 +46,12 @@ if (s->type != FIMG_TYPE_RGB) {
if (NULL==d) { d = s; } if (NULL==d) { d = s; }
else { else {
if (d->type != FIMG_TYPE_RGB) { if (d->type != FIMG_TYPE_RGB) {
fprintf(stderr, "%s : dst type %d invalide\n", fprintf(stderr, "%s: dst type %d invalide\n",
__func__, d->type); __func__, d->type);
return -4; return -4;
} }
} }
nbre = s->width * s->height; nbre = s->width * s->height;
for (idx=0; idx<nbre; idx++) { for (idx=0; idx<nbre; idx++) {
@ -83,7 +86,6 @@ else {
} }
} }
nbre = s->width * s->height; nbre = s->width * s->height;
for (idx=0; idx<nbre; idx++) { for (idx=0; idx<nbre; idx++) {
@ -97,7 +99,6 @@ for (idx=0; idx<nbre; idx++) {
return 0; return 0;
} }
/* ---------------------------------------------------------------- */ /* ---------------------------------------------------------------- */
/* /*
#macro Cos_01( X ) #macro Cos_01( X )
@ -110,7 +111,7 @@ int nbre, idx;
double dval; double dval;
if (s->type != FIMG_TYPE_RGB) { if (s->type != FIMG_TYPE_RGB) {
fprintf(stderr, "%s : type %d invalide\n", fprintf(stderr, "%s: type %d invalide\n",
__func__, s->type); __func__, s->type);
return -4; return -4;
} }
@ -118,7 +119,7 @@ if (s->type != FIMG_TYPE_RGB) {
if (NULL==d) { d = s; } if (NULL==d) { d = s; }
else { else {
if (d->type != FIMG_TYPE_RGB) { if (d->type != FIMG_TYPE_RGB) {
fprintf(stderr, "%s : dst type %d invalide\n", fprintf(stderr, "%s: dst type %d invalide\n",
__func__, d->type); __func__, d->type);
return -4; return -4;
} }

View File

@ -175,11 +175,11 @@ if (FIMG_TYPE_RGB != a->type || FIMG_TYPE_RGB != b->type ||
nbiter = a->width * a->height; nbiter = a->width * a->height;
for (idx=0; idx<nbiter; idx++) { for (idx=0; idx<nbiter; idx++) {
if (a->R[idx] > b->R[idx]) d->R[idx] = a->R[idx]; if (a->R[idx] < b->R[idx]) d->R[idx] = a->R[idx];
else d->R[idx] = b->R[idx]; else d->R[idx] = b->R[idx];
if (a->G[idx] > b->G[idx]) d->G[idx] = a->G[idx]; if (a->G[idx] < b->G[idx]) d->G[idx] = a->G[idx];
else d->G[idx] = b->G[idx]; else d->G[idx] = b->G[idx];
if (a->B[idx] > b->B[idx]) d->B[idx] = a->B[idx]; if (a->B[idx] < b->B[idx]) d->B[idx] = a->B[idx];
else d->B[idx] = b->B[idx]; else d->B[idx] = b->B[idx];
} }
@ -203,11 +203,11 @@ if (FIMG_TYPE_RGB != a->type || FIMG_TYPE_RGB != b->type ||
nbiter = a->width * a->height ; nbiter = a->width * a->height ;
for (idx=0; idx<nbiter; idx++) { for (idx=0; idx<nbiter; idx++) {
if (a->R[idx] < b->R[idx]) d->R[idx] = a->R[idx]; if (a->R[idx] > b->R[idx]) d->R[idx] = a->R[idx];
else d->R[idx] = b->R[idx]; else d->R[idx] = b->R[idx];
if (a->G[idx] < b->G[idx]) d->G[idx] = a->G[idx]; if (a->G[idx] > b->G[idx]) d->G[idx] = a->G[idx];
else d->G[idx] = b->G[idx]; else d->G[idx] = b->G[idx];
if (a->B[idx] < b->B[idx]) d->B[idx] = a->B[idx]; if (a->B[idx] > b->B[idx]) d->B[idx] = a->B[idx];
else d->B[idx] = b->B[idx]; else d->B[idx] = b->B[idx];
} }

81
src/tools/Makefile Normal file
View File

@ -0,0 +1,81 @@
#
# makefile for floatimg tools
# use with caution
#
# PLEASE ! update to the 'Global.makefile' concept !
#
COPT = -Wall -fpic -g -DDEBUG_LEVEL=0
LD_OPTS = -lm
STATIC_LIB = ../../build/lib/libfloatimg.a
DEPS = ../floatimg.h $(STATIC_LIB) Makefile
BIN_DIR = ../../build/bin
EXECUTABLES = $(BIN_DIR)/fimg2pnm $(BIN_DIR)/mkfimg $(BIN_DIR)/png2fimg \
$(BIN_DIR)/fimgstats $(BIN_DIR)/fimg2png $(BIN_DIR)/fimg2tiff \
$(BIN_DIR)/fimg2text $(BIN_DIR)/fimg2fits $(BIN_DIR)/addpnm2fimg \
$(BIN_DIR)/cumulfimgs $(BIN_DIR)/fimgops $(BIN_DIR)/fimgfx \
$(BIN_DIR)/fimghalfsize
# ----------
all: fimg2pnm mkfimg png2fimg fimgstats fimg2png \
fimg2tiff fimg2text fimg2fits \
addpnm2fimg cumulfimgs fimgops fimgfx \
fimghalfsize
clean:
rm -rf $(EXECUTABLES)
fimgstats: fimgstats.c $(DEPS)
gcc $(COPT) $< $(STATIC_LIB) -o $(BIN_DIR)/$@ $(LD_OPTS)
cumulfimgs: cumulfimgs.c $(DEPS)
gcc $(COPT) $< $(STATIC_LIB) -o $(BIN_DIR)/$@ $(LD_OPTS)
mkfimg: mkfimg.c $(DEPS)
gcc $(COPT) $< $(STATIC_LIB) -o $(BIN_DIR)/$@ $(LD_OPTS)
fimgops: fimgops.c $(DEPS)
gcc $(COPT) $< $(STATIC_LIB) -o $(BIN_DIR)/$@ $(LD_OPTS)
fimgfx: fimgfx.c $(DEPS)
gcc $(COPT) $< $(STATIC_LIB) -o $(BIN_DIR)/$@ $(LD_OPTS)
fimghalfsize: fimghalfsize.c $(DEPS)
gcc $(COPT) $< $(STATIC_LIB) -o $(BIN_DIR)/$@ $(LD_OPTS)
fimg2pnm: fimg2pnm.c $(DEPS)
gcc $(COPT) $< $(STATIC_LIB) -o $(BIN_DIR)/$@ $(LD_OPTS)
fimg2fits: fimg2fits.c $(DEPS)
gcc $(COPT) $< $(STATIC_LIB) -lcfitsio -o $(BIN_DIR)/$@ $(LD_OPTS)
fimg2png: fimg2png.c $(DEPS)
gcc $(COPT) $< $(STATIC_LIB) -lpnglite -lz -o $(BIN_DIR)/$@ $(LD_OPTS)
fimg2text: fimg2text.c $(DEPS)
gcc $(COPT) $< $(STATIC_LIB) -o $(BIN_DIR)/$@ $(LD_OPTS)
fimg2tiff: fimg2tiff.c $(DEPS)
gcc $(COPT) $< $(STATIC_LIB) -ltiff -o $(BIN_DIR)/$@ $(LD_OPTS)
#
# this tool require an external library
# http://la.buvette.org/devel/libimage/libimage.html
#
addtga2fimg: addtga2fimg.c $(DEPS)
gcc $(COPT) $< $(STATIC_LIB) -limageSO -o $(BIN_DIR)/$@ $(LD_OPTS)
addpnm2fimg: addpnm2fimg.c $(DEPS)
gcc $(COPT) $< $(STATIC_LIB) -o $(BIN_DIR)/$@ $(LD_OPTS)
# if "undefined reference to crc32" then "use -lz"
png2fimg: png2fimg.c $(DEPS)
gcc $(COPT) $< $(STATIC_LIB) -lpnglite -lz -o $(BIN_DIR)/$@ $(LD_OPTS)

View File

@ -1,5 +1,8 @@
/* /*
FIMGFX FIMGFX
* some functions here come from 'funcs/contrast.c'
*
*/ */
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
@ -22,7 +25,7 @@ typedef struct {
enum fxid { Fx_cos01=5, Fx_cos010, Fx_pow2, Fx_sqrt, Fx_gray0, Fx_halfsz0, enum fxid { Fx_cos01=5, Fx_cos010, Fx_pow2, Fx_sqrt, Fx_gray0, Fx_halfsz0,
Fx_rot90, Fx_cmixa, Fx_desat, Fx_ctr2x2, Fx_norm, Fx_rot90, Fx_cmixa, Fx_desat, Fx_ctr2x2, Fx_norm,
Fx_classtrial, Fx_mirror, Fx_shift0, Fx_classtrial, Fx_mirror, Fx_shift0, Fx_trimul,
Fx_xper, Fx_binarize, Fx_trinarize,Fx_hilight_R }; Fx_xper, Fx_binarize, Fx_trinarize,Fx_hilight_R };
Fx fx_list[] = { Fx fx_list[] = {
@ -39,6 +42,7 @@ Fx fx_list[] = {
{ "ctr2x2", Fx_ctr2x2, 0, 1 }, { "ctr2x2", Fx_ctr2x2, 0, 1 },
{ "mirror", Fx_mirror, 0, 1 }, { "mirror", Fx_mirror, 0, 1 },
{ "shift0", Fx_shift0, 0, 1 }, { "shift0", Fx_shift0, 0, 1 },
{ "trimul", Fx_trimul, 0, 1 },
// { "norm", Fx_norm, 0, 1 }, // { "norm", Fx_norm, 0, 1 },
{ "classtrial", Fx_classtrial, 0, 1 }, { "classtrial", Fx_classtrial, 0, 1 },
{ "binarize", Fx_binarize, 0, 1 }, { "binarize", Fx_binarize, 0, 1 },
@ -51,6 +55,7 @@ Fx fx_list[] = {
static void list_of_effects(void) static void list_of_effects(void)
{ {
Fx *fx; Fx *fx;
/* this list must be on just ONE columns */
for (fx=fx_list; fx->name; fx++) { for (fx=fx_list; fx->name; fx++) {
printf("%s\n", fx->name); printf("%s\n", fx->name);
} }
@ -89,7 +94,7 @@ fprintf(stderr, ">>> %s ( %p %p %f )\n", __func__, S, D, kf);
foo = fimg_classif_trial(S, D, kf, 0); foo = fimg_classif_trial(S, D, kf, 0);
if (foo) { if (foo) {
fprintf(stderr, "%s err %d classif_trial %p\n", __func__, fprintf(stderr, "%s error %d classif_trial %p\n", __func__,
foo, S); foo, S);
return -98; return -98;
} }
@ -102,7 +107,7 @@ static void help(int lvl)
Fx *fx; Fx *fx;
int foo; int foo;
printf("-- fimg special effects -- %s %s --\n", __DATE__, __TIME__); printf("-*- fimg special effects -*- %s %s -*-\n", __DATE__, __TIME__);
puts("usage:"); puts("usage:");
puts("\tfimgfx [options] <effect> source.fimg resultat.fimg"); puts("\tfimgfx [options] <effect> source.fimg resultat.fimg");
@ -121,7 +126,7 @@ for (fx=fx_list; fx->name; fx++) {
foo = 0; foo = 0;
} }
} }
puts(""); puts("\n");
fimg_print_version(1); fimg_print_version(1);
exit(0); exit(0);
} }
@ -203,9 +208,13 @@ switch (action) {
foo = fimg_mirror(&src, &dest, 0); foo = fimg_mirror(&src, &dest, 0);
break; break;
case Fx_shift0: case Fx_shift0:
fprintf(stderr, "Krkrk %d\n", action); // fprintf(stderr, "Krkrk %d\n", action);
foo = fimg_auto_shift_to_zero(&src, &dest); foo = fimg_auto_shift_to_zero(&src, &dest);
break; break;
case Fx_trimul:
fprintf(stderr, "trimul %d\n", action);
foo = fimg_sfx_triplemul(&src, &dest, 0);
break;
case Fx_ctr2x2: case Fx_ctr2x2:
foo = fimg_contour_2x2(&src, &dest, 0); foo = fimg_contour_2x2(&src, &dest, 0);
break; break;

Some files were not shown because too many files have changed in this diff Show More