| 0 | 1 # Makefile | 
|  | 2 | 
| 3 | 3 # chose build plattform | 
| 0 | 4 include ../make/make.config | 
|  | 5 | 
| 3 | 6 OPTIONS=-DPARAM_STUFF -DPOLLEN_STUFF | 
|  | 7 | 
| 0 | 8 all: 	tools \ | 
|  | 9 	bruyn \ | 
|  | 10 	koch \ | 
|  | 11 	corvi \ | 
|  | 12 	xia \ | 
|  | 13 	xie \ | 
| 3 | 14 	xie2 \ | 
| 0 | 15 	cox \ | 
|  | 16 	zhu \ | 
|  | 17 	dugad \ | 
|  | 18 	wang \ | 
|  | 19 	frid2 \ | 
| 3 | 20 	kim \ | 
|  | 21 	kund2 \ | 
|  | 22 	kund3 | 
| 0 | 23 | 
|  | 24 .SUFFIXES: .c .o .1 .ps | 
|  | 25 | 
|  | 26 .c$(O): | 
| 3 | 27 	$(CC) $(CFLAGS) $(INCLUDES) $(OPTIONS) -o $@ -c $< | 
| 0 | 28 | 
|  | 29 .1.ps: | 
|  | 30 	$(GROFF) $< > $@ | 
|  | 31 | 
|  | 32 # library containing general stuff | 
|  | 33 | 
|  | 34 $(LIBPREFIX)wm$(LIB): dct$(O) coeff$(O) gray$(O) sort$(O) signature$(O) coord$(O) wm$(O) | 
|  | 35 	$(RM) $@ | 
|  | 36 	ar -rc $@ dct$(O) coeff$(O) gray$(O) sort$(O) signature$(O) coord$(O) wm$(O) | 
|  | 37 | 
|  | 38 libraryclean: | 
|  | 39 	$(RM) $(LIBPREFIX)wm$(LIB) | 
|  | 40 | 
|  | 41 # library containing wavelet transform stuff | 
|  | 42 | 
|  | 43 $(LIBPREFIX)wavelet$(LIB): wavelet$(O) dwt$(O) dwt_util$(O) | 
|  | 44 	$(RM) $@ | 
|  | 45 	ar -rc $@ wavelet$(O) dwt$(O) dwt_util$(O) | 
|  | 46 | 
|  | 47 waveletclean: | 
|  | 48 	$(RM) $(LIBPREFIX)wavelet$(LIB) | 
|  | 49 | 
|  | 50 # some general tools to compute difference image, PSNR, ... | 
|  | 51 | 
| 10 | 52 tools: cmp_pgm$(EXE) cmp_dct8x8$(EXE) cmp_dct$(EXE) cmp_dwt$(EXE) cmp_ppm$(EXE) | 
| 0 | 53 | 
|  | 54 toolstest: | 
|  | 55 | 
|  | 56 toolsinstall: tools | 
| 10 | 57 	$(CP) cmp_ppm$(EXE) cmp_pgm$(EXE) cmp_dct8x8$(EXE) cmp_dct$(EXE) cmp_dwt$(EXE) $(INSTALLDIR) | 
| 0 | 58 | 
| 10 | 59 toolsman: cmp_ppm.ps cmp_pgm.ps cmp_dct8x8.ps cmp_dct.ps | 
| 0 | 60 | 
|  | 61 toolsclean: | 
| 10 | 62 	$(RM) cmp_ppm$(EXE) cmp_pgm$(EXE) cmp_dct$(EXE) cmp_dct8x8$(EXE) cmp_dwt$(EXE) | 
| 0 | 63 | 
|  | 64 cmp_pgm$(EXE):  cmp_pgm$(O) $(LIBPREFIX)wm$(LIB) | 
| 3 | 65 	$(CC) $(LDFLAGS) -o $@ cmp_pgm$(O) $(WMLIB) $(PGMLIBS) $(LIBS) | 
| 0 | 66 | 
| 10 | 67 cmp_ppm$(EXE):  cmp_ppm$(O) $(LIBPREFIX)wm$(LIB) | 
|  | 68 	$(CC) $(LDFLAGS) -o $@ cmp_ppm$(O) $(WMLIB) $(PGMLIBS) $(LIBS) | 
|  | 69 | 
| 0 | 70 cmp_dct$(EXE):  cmp_dct$(O) $(LIBPREFIX)wm$(LIB) | 
|  | 71 	$(CC) $(LDFLAGS) -o $@ cmp_dct$(O) $(WMLIB) $(PGMLIBS) | 
|  | 72 | 
|  | 73 cmp_dwt$(EXE):  cmp_dwt$(O) $(LIBPREFIX)wavelet$(LIB)  $(LIBPREFIX)wm$(LIB) | 
|  | 74 	$(CC) $(LDFLAGS) -o $@ cmp_dwt$(O) $(WAVELIB) $(WMLIB) $(PGMLIBS) | 
|  | 75 | 
|  | 76 cmp_dct8x8$(EXE): cmp_dct8x8$(O) $(LIBPREFIX)wm$(LIB) | 
|  | 77 	$(CC) $(LDFLAGS) -o $@ cmp_dct8x8$(O) $(WMLIB) $(PGMLIBS) | 
|  | 78 | 
|  | 79 | 
|  | 80 # Koch's algorithm (8x8 block DCT, blind, binary) | 
|  | 81 | 
|  | 82 koch: gen_koch_sig$(EXE) wm_koch_e$(EXE) wm_koch_d$(EXE) cmp_koch_sig$(EXE) | 
|  | 83 | 
|  | 84 kochtest: koch | 
|  | 85 	gen_koch_sig$(EXE) -n 150 < gen_koch_sig.c > ../sigs/koch.sig | 
|  | 86 	wm_koch_e$(EXE) -s ../sigs/koch.sig -o ../watermarked/koch_lena.pgm ../images/lena.pgm | 
|  | 87 	wm_koch_d$(EXE) -s ../sigs/koch.sig -o ../wms/koch.wm ../watermarked/koch_lena.pgm | 
|  | 88 	cmp_koch_sig$(EXE) -s ../sigs/koch.sig ../wms/koch.wm | 
|  | 89 | 
|  | 90 kochinstall: koch | 
|  | 91 	$(CP) gen_koch_sig$(EXE) wm_koch_e$(EXE) wm_koch_d$(EXE) cmp_koch_sig$(EXE) $(INSTALLDIR) | 
|  | 92 | 
|  | 93 kochclean: | 
|  | 94 	$(RM) gen_koch_sig$(EXE) wm_koch_e$(EXE) wm_koch_d$(EXE) cmp_koch_sig$(EXE) | 
|  | 95 | 
|  | 96 kochman: | 
|  | 97 | 
|  | 98 wm_koch_e$(EXE): wm_koch_e$(O) $(LIBPREFIX)wm$(LIB) | 
|  | 99 	$(CC) $(LDFLAGS) -o $@ wm_koch_e$(O) $(WMLIB) $(LIBS) $(PGMLIBS) | 
|  | 100 | 
|  | 101 wm_koch_d$(EXE): wm_koch_d$(O) $(LIBPREFIX)wm$(LIB) | 
|  | 102 	$(CC) $(LDFLAGS) -o $@  wm_koch_d$(O) $(WMLIB) $(LIBS) $(PGMLIBS) | 
|  | 103 | 
|  | 104 gen_koch_sig$(EXE): gen_koch_sig$(O) wm$(O) | 
|  | 105 	$(CC) $(LDFLAGS) -o $@ gen_koch_sig$(O) wm$(O) $(LIBS) | 
|  | 106 | 
|  | 107 cmp_koch_sig$(EXE): cmp_koch_sig$(O) $(LIBPREFIX)wm$(LIB) | 
|  | 108 	$(CC) $(LDFLAGS) -o $@ cmp_koch_sig$(O) $(WMLIB) $(LIBS) | 
|  | 109 | 
|  | 110 # Fridrich's 2. scheme (full-frame DCT, blind, binary) | 
|  | 111 | 
|  | 112 frid2: gen_frid2_sig$(EXE) wm_frid2_e$(EXE) wm_frid2_d$(EXE) cmp_frid2_sig$(EXE) | 
|  | 113 | 
|  | 114 frid2test: frid2 | 
|  | 115 	gen_frid2_sig$(EXE) -n 250 < gen_frid2_sig.c > ../sigs/frid2.sig | 
|  | 116 	wm_frid2_e$(EXE) -s ../sigs/frid2.sig -o ../watermarked/frid2_lena.pgm ../images/lena.pgm | 
|  | 117 	wm_frid2_d$(EXE) -s ../sigs/frid2.sig -o ../wms/frid2.wm ../watermarked/frid2_lena.pgm | 
|  | 118 	cmp_frid2_sig$(EXE) -s ../sigs/frid2.sig ../wms/frid2.wm | 
|  | 119 | 
|  | 120 frid2install: frid2 | 
|  | 121 	$(CP) gen_frid2_sig$(EXE) wm_frid2_e$(EXE) wm_frid2_d$(EXE) cmp_frid2_sig$(EXE) $(INSTALLDIR) | 
|  | 122 | 
|  | 123 frid2clean: | 
|  | 124 	$(RM) gen_frid2_sig$(EXE) wm_frid2_e$(EXE) wm_frid2_d$(EXE) cmp_frid2_sig$(EXE) | 
|  | 125 | 
|  | 126 frid2man: | 
|  | 127 | 
|  | 128 wm_frid2_e$(EXE): wm_frid2_e$(O) $(LIBPREFIX)wm$(LIB) frid2_common$(O) | 
|  | 129 	$(CC) $(LDFLAGS) -o $@ wm_frid2_e$(O) frid2_common$(O) $(WMLIB) $(LIBS) $(PGMLIBS) | 
|  | 130 | 
|  | 131 wm_frid2_d$(EXE): wm_frid2_d$(O) $(LIBPREFIX)wm$(LIB) frid2_common$(O) | 
|  | 132 	$(CC) $(LDFLAGS) -o $@  wm_frid2_d$(O) frid2_common$(O) $(WMLIB) $(LIBS) $(PGMLIBS) | 
|  | 133 | 
|  | 134 gen_frid2_sig$(EXE): gen_frid2_sig$(O) wm$(O) | 
|  | 135 	$(CC) $(LDFLAGS) -o $@ gen_frid2_sig$(O) wm$(O) $(LIBS) | 
|  | 136 | 
|  | 137 cmp_frid2_sig$(EXE): cmp_frid2_sig$(O) $(LIBPREFIX)wm$(LIB) | 
|  | 138 	$(CC) $(LDFLAGS) -o $@ cmp_frid2_sig$(O) $(WMLIB) $(LIBS) | 
|  | 139 | 
|  | 140 | 
|  | 141 # Bruyndonckx's algorithm (spatial domain, block classification, blind) | 
|  | 142 | 
|  | 143 bruyn: gen_bruyn_sig$(EXE) wm_bruyn_e$(EXE) wm_bruyn_d$(EXE) cmp_bruyn_sig$(EXE) | 
|  | 144 | 
|  | 145 bruyntest: bruyn | 
|  | 146 	gen_bruyn_sig$(EXE) -n 400 < gen_bruyn_sig.c > ../sigs/bruyn.sig | 
|  | 147 	wm_bruyn_e$(EXE) -s ../sigs/bruyn.sig -o ../watermarked/bruyn_lena.pgm ../images/lena.pgm | 
|  | 148 	wm_bruyn_d$(EXE) -s ../sigs/bruyn.sig -o ../wms/bruyn.wm ../watermarked/bruyn_lena.pgm | 
|  | 149 	cmp_bruyn_sig$(EXE) -s ../sigs/bruyn.sig ../wms/bruyn.wm | 
|  | 150 | 
|  | 151 bruyninstall: bruyn | 
|  | 152 	$(CP) gen_bruyn_sig$(EXE) wm_bruyn_e$(EXE) wm_bruyn_d$(EXE) cmp_bruyn_sig$(EXE) $(INSTALLDIR) | 
|  | 153 | 
|  | 154 bruynclean: | 
|  | 155 	$(RM) gen_bruyn_sig$(EXE) wm_bruyn_e$(EXE) wm_bruyn_d$(EXE) cmp_bruyn_sig$(EXE) | 
|  | 156 | 
|  | 157 bruynman: | 
|  | 158 | 
|  | 159 wm_bruyn_e$(EXE): wm_bruyn_e$(O) bruyn_common$(O) $(LIBPREFIX)wm$(LIB) | 
|  | 160 	$(CC) $(LDFLAGS) -o $@ wm_bruyn_e$(O) bruyn_common$(O) $(WMLIB) $(LIBS) $(PGMLIBS) | 
|  | 161 | 
|  | 162 wm_bruyn_d$(EXE): wm_bruyn_d$(O)  bruyn_common$(O) $(LIBPREFIX)wm$(LIB) | 
|  | 163 	$(CC) $(LDFLAGS) -o $@  wm_bruyn_d$(O) bruyn_common$(O) $(WMLIB) $(LIBS) $(PGMLIBS) | 
|  | 164 | 
|  | 165 gen_bruyn_sig$(EXE): gen_bruyn_sig$(O) wm$(O) | 
|  | 166 	$(CC) $(LDFLAGS) -o $@ gen_bruyn_sig$(O) wm$(O) $(LIBS) | 
|  | 167 | 
|  | 168 cmp_bruyn_sig$(EXE): cmp_bruyn_sig$(O) $(LIBPREFIX)wm$(LIB) | 
|  | 169 	$(CC) $(LDFLAGS) -o $@ cmp_bruyn_sig$(O) $(WMLIB) $(LIBS) | 
|  | 170 | 
|  | 171 | 
|  | 172 # Cox's algorithm (full-frame DCT, non-blind, spread-spectrum) | 
|  | 173 | 
|  | 174 cox: gen_cox_sig$(EXE) wm_cox_e$(EXE) wm_cox_d$(EXE) cmp_cox_sig$(EXE) | 
|  | 175 | 
|  | 176 coxtest: cox | 
|  | 177 	gen_cox_sig$(EXE) > ../sigs/cox.sig | 
|  | 178 	wm_cox_e$(EXE) -s ../sigs/cox.sig -o ../watermarked/cox_lena.pgm ../images/lena.pgm | 
|  | 179 	wm_cox_d$(EXE) -s ../sigs/cox.sig -o ../wms/cox.wm -i ../images/lena.pgm ../watermarked/cox_lena.pgm | 
|  | 180 	cmp_cox_sig$(EXE) -s ../sigs/cox.sig ../wms/cox.wm | 
|  | 181 | 
|  | 182 coxinstall: cox | 
|  | 183 	$(CP) gen_cox_sig$(EXE) wm_cox_e$(EXE) wm_cox_d$(EXE) cmp_cox_sig$(EXE) $(INSTALLDIR) | 
|  | 184 | 
|  | 185 coxman: gen_cox_sig.ps wm_cox_e.ps wm_cox_d.ps | 
|  | 186 | 
|  | 187 wm_cox_e$(EXE): wm_cox_e$(O) $(LIBPREFIX)wm$(LIB) | 
|  | 188 	$(CC) $(LDFLAGS) -o $@ wm_cox_e$(O) $(WMLIB) $(LIBS) $(PGMLIBS) | 
|  | 189 | 
|  | 190 wm_cox_d$(EXE): wm_cox_d$(O) $(LIBPREFIX)wm$(LIB) | 
|  | 191 	$(CC) $(LDFLAGS) -o $@  wm_cox_d$(O) $(WMLIB) $(LIBS) $(PGMLIBS) | 
|  | 192 | 
|  | 193 gen_cox_sig$(EXE): gen_cox_sig$(O) | 
|  | 194 	$(CC) $(LDFLAGS) -o $@ gen_cox_sig$(O) $(LIBS) | 
|  | 195 | 
|  | 196 cmp_cox_sig$(EXE): cmp_cox_sig$(O) | 
|  | 197 	$(CC) $(LDFLAGS) -o $@ cmp_cox_sig$(O) $(LIBS) | 
|  | 198 | 
|  | 199 coxclean: | 
|  | 200 	$(RM) gen_cox_sig$(EXE) wm_cox_e$(EXE) wm_cox_d$(EXE) cmp_cox_sig$(EXE) | 
|  | 201 | 
|  | 202 | 
|  | 203 # Corvi's algorithm (DWT, non-blind, spread-spectrum, approximation image) | 
|  | 204 | 
|  | 205 corvi: gen_corvi_sig$(EXE) wm_corvi_e$(EXE) wm_corvi_d$(EXE) cmp_corvi_sig$(EXE) | 
|  | 206 | 
|  | 207 corvitest: corvi | 
|  | 208 	gen_corvi_sig$(EXE) > ../sigs/corvi.sig | 
|  | 209 	wm_corvi_e$(EXE) -s ../sigs/corvi.sig -o ../watermarked/corvi_lena.pgm ../images/lena.pgm | 
|  | 210 	wm_corvi_d$(EXE) -s ../sigs/corvi.sig -o ../wms/corvi.wm -i ../images/lena.pgm ../watermarked/corvi_lena.pgm | 
|  | 211 	cmp_corvi_sig$(EXE) -s ../sigs/corvi.sig ../wms/corvi.wm | 
|  | 212 | 
|  | 213 corviinstall: corvi | 
|  | 214 	$(CP) gen_corvi_sig$(EXE) wm_corvi_e$(EXE) wm_corvi_d$(EXE) cmp_corvi_sig$(EXE) $(INSTALLDIR) | 
|  | 215 | 
|  | 216 corviman: gen_corvi_sig.ps wm_corvi_e.ps wm_corvi_d.ps | 
|  | 217 | 
|  | 218 wm_corvi_e$(EXE): wm_corvi_e$(O) $(LIBPREFIX)wm$(LIB) $(LIBPREFIX)wavelet$(LIB) | 
|  | 219 	$(CC) $(LDFLAGS) -o $@ wm_corvi_e$(O) $(WMLIB) $(WAVELIB) $(LIBS) $(PGMLIBS) | 
|  | 220 | 
|  | 221 wm_corvi_d$(EXE): wm_corvi_d$(O) $(LIBPREFIX)wm$(LIB) $(LIBPREFIX)wavelet$(LIB) | 
|  | 222 	$(CC) $(LDFLAGS) -o $@  wm_corvi_d$(O) $(WMLIB) $(WAVELIB) $(LIBS) $(PGMLIBS) | 
|  | 223 | 
|  | 224 gen_corvi_sig$(EXE): gen_corvi_sig$(O) | 
|  | 225 	$(CC) $(LDFLAGS) -o $@ gen_corvi_sig$(O) $(LIBS) | 
|  | 226 | 
|  | 227 cmp_corvi_sig$(EXE): cmp_corvi_sig$(O) | 
|  | 228 	$(CC) $(LDFLAGS) -o $@ cmp_corvi_sig$(O) $(LIBS) | 
|  | 229 | 
|  | 230 corviclean: | 
|  | 231 	$(RM) gen_corvi_sig$(EXE) wm_corvi_e$(EXE) wm_corvi_d$(EXE) cmp_corvi_sig$(EXE) | 
|  | 232 | 
|  | 233 | 
|  | 234 # Xia's algorithm (DWT, non-blind, spread-spectrum, detail subbands) | 
|  | 235 | 
|  | 236 xia: gen_xia_sig$(EXE) wm_xia_e$(EXE) wm_xia_d$(EXE) cmp_xia_sig$(EXE) | 
|  | 237 | 
|  | 238 xiatest: xia | 
|  | 239 	gen_xia_sig$(EXE) > ../sigs/xia.sig | 
|  | 240 	wm_xia_e$(EXE) -s ../sigs/xia.sig -o ../watermarked/xia_lena.pgm ../images/lena.pgm | 
|  | 241 	wm_xia_d$(EXE) -s ../sigs/xia.sig -o ../wms/xia.wm -i ../images/lena.pgm ../watermarked/xia_lena.pgm | 
|  | 242 	cmp_xia_sig$(EXE) -s ../sigs/xia.sig ../wms/xia.wm | 
|  | 243 | 
|  | 244 xiainstall: xia | 
|  | 245 	$(CP) gen_xia_sig$(EXE) wm_xia_e$(EXE) wm_xia_d$(EXE) cmp_xia_sig$(EXE) $(INSTALLDIR) | 
|  | 246 | 
|  | 247 xiaman: gen_xia_sig.ps wm_xia_e.ps wm_xia_d.ps | 
|  | 248 | 
|  | 249 wm_xia_e$(EXE): wm_xia_e$(O) $(LIBPREFIX)wm$(LIB) $(LIBPREFIX)wavelet$(LIB) | 
|  | 250 	$(CC) $(LDFLAGS) -o $@ wm_xia_e$(O) $(WMLIB) $(WAVELIB) $(LIBS) $(PGMLIBS) | 
|  | 251 | 
|  | 252 wm_xia_d$(EXE): wm_xia_d$(O) $(LIBPREFIX)wm$(LIB) $(LIBPREFIX)wavelet$(LIB) | 
|  | 253 	$(CC) $(LDFLAGS) -o $@  wm_xia_d$(O) $(WMLIB) $(WAVELIB) $(LIBS) $(PGMLIBS) | 
|  | 254 | 
|  | 255 gen_xia_sig$(EXE): gen_xia_sig$(O) | 
|  | 256 	$(CC) $(LDFLAGS) -o $@ gen_xia_sig$(O) $(LIBS) | 
|  | 257 | 
|  | 258 cmp_xia_sig$(EXE): cmp_xia_sig$(O) | 
|  | 259 	$(CC) $(LDFLAGS) -o $@ cmp_xia_sig$(O) $(LIBS) | 
|  | 260 | 
|  | 261 xiaclean: | 
|  | 262 	$(RM) gen_xia_sig$(EXE) wm_xia_e$(EXE) wm_xia_d$(EXE) cmp_xia_sig$(EXE) | 
|  | 263 | 
|  | 264 # Wang's algorithm (DWT, non-blind, spread-spectrum, detail subbands) | 
|  | 265 | 
|  | 266 wang: gen_wang_sig$(EXE) wm_wang_e$(EXE) wm_wang_d$(EXE) cmp_wang_sig$(EXE) | 
|  | 267 | 
|  | 268 wangtest: wang | 
|  | 269 	gen_wang_sig$(EXE) -n 1000 > ../sigs/wang.sig | 
|  | 270 	wm_wang_e$(EXE) -s ../sigs/wang.sig -o ../watermarked/wang_lena.pgm ../images/lena.pgm | 
|  | 271 	wm_wang_d$(EXE) -s ../sigs/wang.sig -o ../wms/wang.wm -i ../images/lena.pgm ../watermarked/wang_lena.pgm | 
|  | 272 	cmp_wang_sig$(EXE) -s ../sigs/wang.sig ../wms/wang.wm | 
|  | 273 | 
|  | 274 wanginstall: wang | 
|  | 275 	$(CP) gen_wang_sig$(EXE) wm_wang_e$(EXE) wm_wang_d$(EXE) cmp_wang_sig$(EXE) $(INSTALLDIR) | 
|  | 276 | 
|  | 277 wangman: gen_wang_sig.ps wm_wang_e.ps wm_wang_d.ps | 
|  | 278 | 
|  | 279 wm_wang_e$(EXE): wm_wang_e$(O) $(LIBPREFIX)wm$(LIB) $(LIBPREFIX)wavelet$(LIB) wang_common$(O) | 
|  | 280 	$(CC) $(LDFLAGS) -o $@ wm_wang_e$(O) wang_common$(O) $(WMLIB) $(WAVELIB) $(LIBS) $(PGMLIBS) | 
|  | 281 | 
|  | 282 wm_wang_d$(EXE): wm_wang_d$(O) $(LIBPREFIX)wm$(LIB) $(LIBPREFIX)wavelet$(LIB) wang_common$(O) | 
|  | 283 	$(CC) $(LDFLAGS) -o $@  wm_wang_d$(O) wang_common$(O) $(WMLIB) $(WAVELIB) $(LIBS) $(PGMLIBS) | 
|  | 284 | 
|  | 285 gen_wang_sig$(EXE): gen_wang_sig$(O) | 
|  | 286 	$(CC) $(LDFLAGS) -o $@ gen_wang_sig$(O) $(LIBS) | 
|  | 287 | 
|  | 288 cmp_wang_sig$(EXE): cmp_wang_sig$(O) | 
|  | 289 	$(CC) $(LDFLAGS) -o $@ cmp_wang_sig$(O) $(LIBS) | 
|  | 290 | 
|  | 291 wangclean: | 
|  | 292 	$(RM) gen_wang_sig$(EXE) wm_wang_e$(EXE) wm_wang_d$(EXE) cmp_wang_sig$(EXE) | 
|  | 293 | 
|  | 294 # Kim's algorithm (DWT, non-blind, spread-spectrum, approx. & detail subbands) | 
|  | 295 | 
|  | 296 kim: gen_kim_sig$(EXE) wm_kim_e$(EXE) wm_kim_d$(EXE) cmp_kim_sig$(EXE) | 
|  | 297 | 
|  | 298 kimtest: kim | 
|  | 299 	gen_kim_sig$(EXE) -n 1000 > ../sigs/kim.sig | 
|  | 300 	wm_kim_e$(EXE) -s ../sigs/kim.sig -o ../watermarked/kim_lena.pgm ../images/lena.pgm | 
|  | 301 	wm_kim_d$(EXE) -s ../sigs/kim.sig -o ../wms/kim.wm -i ../images/lena.pgm ../watermarked/kim_lena.pgm | 
|  | 302 	cmp_kim_sig$(EXE) -s ../sigs/kim.sig ../wms/kim.wm | 
|  | 303 | 
|  | 304 kiminstall: kim | 
|  | 305 	$(CP) gen_kim_sig$(EXE) wm_kim_e$(EXE) wm_kim_d$(EXE) cmp_kim_sig$(EXE) $(INSTALLDIR) | 
|  | 306 | 
|  | 307 kimman: gen_kim_sig.ps wm_kim_e.ps wm_kim_d.ps | 
|  | 308 | 
|  | 309 wm_kim_e$(EXE): wm_kim_e$(O) $(LIBPREFIX)wm$(LIB) $(LIBPREFIX)wavelet$(LIB) kim_common$(O) | 
|  | 310 	$(CC) $(LDFLAGS) -o $@ wm_kim_e$(O) kim_common$(O) $(WMLIB) $(WAVELIB) $(LIBS) $(PGMLIBS) | 
|  | 311 | 
|  | 312 wm_kim_d$(EXE): wm_kim_d$(O) $(LIBPREFIX)wm$(LIB) $(LIBPREFIX)wavelet$(LIB) kim_common$(O) | 
|  | 313 	$(CC) $(LDFLAGS) -o $@  wm_kim_d$(O) kim_common$(O) $(WMLIB) $(WAVELIB) $(LIBS) $(PGMLIBS) | 
|  | 314 | 
|  | 315 gen_kim_sig$(EXE): gen_kim_sig$(O) | 
|  | 316 	$(CC) $(LDFLAGS) -o $@ gen_kim_sig$(O) $(LIBS) | 
|  | 317 | 
|  | 318 cmp_kim_sig$(EXE): cmp_kim_sig$(O) | 
|  | 319 	$(CC) $(LDFLAGS) -o $@ cmp_kim_sig$(O) $(LIBS) | 
|  | 320 | 
|  | 321 kimclean: | 
|  | 322 	$(RM) gen_kim_sig$(EXE) wm_kim_e$(EXE) wm_kim_d$(EXE) cmp_kim_sig$(EXE) | 
|  | 323 | 
|  | 324 # Zhu's algorithm (DWT, non-blind, spread-spectrum, detail subbands) | 
|  | 325 | 
|  | 326 zhu: gen_zhu_sig$(EXE) wm_zhu_e$(EXE) wm_zhu_d$(EXE) cmp_zhu_sig$(EXE) | 
|  | 327 | 
|  | 328 zhutest: zhu | 
|  | 329 	gen_zhu_sig$(EXE) > ../sigs/zhu.sig | 
|  | 330 	wm_zhu_e$(EXE) -s ../sigs/zhu.sig -o ../watermarked/zhu_lena.pgm ../images/lena.pgm | 
|  | 331 	wm_zhu_d$(EXE) -s ../sigs/zhu.sig -o ../wms/zhu.wm -i ../images/lena.pgm ../watermarked/zhu_lena.pgm | 
|  | 332 	cmp_zhu_sig$(EXE) -s ../sigs/zhu.sig ../wms/zhu.wm | 
|  | 333 | 
|  | 334 zhuinstall: zhu | 
|  | 335 	$(CP) gen_zhu_sig$(EXE) wm_zhu_e$(EXE) wm_zhu_d$(EXE) cmp_zhu_sig$(EXE) $(INSTALLDIR) | 
|  | 336 | 
|  | 337 zhuman: gen_zhu_sig.ps wm_zhu_e.ps wm_zhu_d.ps | 
|  | 338 | 
|  | 339 wm_zhu_e$(EXE): wm_zhu_e$(O) $(LIBPREFIX)wm$(LIB) $(LIBPREFIX)wavelet$(LIB) | 
|  | 340 	$(CC) $(LDFLAGS) -o $@ wm_zhu_e$(O) $(WMLIB) $(WAVELIB) $(LIBS) $(PGMLIBS) | 
|  | 341 | 
|  | 342 wm_zhu_d$(EXE): wm_zhu_d$(O) $(LIBPREFIX)wm$(LIB) $(LIBPREFIX)wavelet$(LIB) | 
|  | 343 	$(CC) $(LDFLAGS) -o $@  wm_zhu_d$(O) $(WMLIB) $(WAVELIB) $(LIBS) $(PGMLIBS) | 
|  | 344 | 
|  | 345 gen_zhu_sig$(EXE): gen_zhu_sig$(O) | 
|  | 346 	$(CC) $(LDFLAGS) -o $@ gen_zhu_sig$(O) $(LIBS) | 
|  | 347 | 
|  | 348 cmp_zhu_sig$(EXE): cmp_zhu_sig$(O) | 
|  | 349 	$(CC) $(LDFLAGS) -o $@ cmp_zhu_sig$(O) $(LIBS) | 
|  | 350 | 
|  | 351 zhuclean: | 
|  | 352 	$(RM) gen_zhu_sig$(EXE) wm_zhu_e$(EXE) wm_zhu_d$(EXE) cmp_zhu_sig$(EXE) | 
|  | 353 | 
|  | 354 # Xie's algorithm (DWT, blind, binary, quantization, approximation image) | 
|  | 355 | 
|  | 356 xie: gen_xie_sig$(EXE) wm_xie_e$(EXE) wm_xie_d$(EXE) cmp_xie_sig$(EXE) | 
|  | 357 | 
|  | 358 xietest: xie | 
|  | 359 	gen_xie_sig$(EXE) -n 800 gen_xie_sig.c > ../sigs/xie.sig | 
|  | 360 	wm_xie_e$(EXE) -s ../sigs/xie.sig -o ../watermarked/xie_lena.pgm ../images/lena.pgm | 
|  | 361 	wm_xie_d$(EXE) -s ../sigs/xie.sig -o ../wms/xie.wm ../watermarked/xie_lena.pgm | 
|  | 362 	cmp_xie_sig$(EXE) -s ../sigs/xie.sig ../wms/xie.wm | 
|  | 363 | 
|  | 364 xieinstall: xie | 
|  | 365 	$(CP) gen_xie_sig$(EXE) wm_xie_e$(EXE) wm_xie_d$(EXE) cmp_xie_sig$(EXE) $(INSTALLDIR) | 
|  | 366 | 
|  | 367 xieman: gen_xie_sig.ps wm_xie_e.ps wm_xie_d.ps | 
|  | 368 | 
|  | 369 wm_xie_e$(EXE): wm_xie_e$(O) $(LIBPREFIX)wm$(LIB) $(LIBPREFIX)wavelet$(LIB) | 
|  | 370 	$(CC) $(LDFLAGS) -o $@ wm_xie_e$(O) $(WMLIB) $(WAVELIB) $(LIBS) $(PGMLIBS) | 
|  | 371 | 
|  | 372 wm_xie_d$(EXE): wm_xie_d$(O) $(LIBPREFIX)wm$(LIB) $(LIBPREFIX)wavelet$(LIB) | 
|  | 373 	$(CC) $(LDFLAGS) -o $@  wm_xie_d$(O) $(WMLIB) $(WAVELIB) $(LIBS) $(PGMLIBS) | 
|  | 374 | 
|  | 375 gen_xie_sig$(EXE): gen_xie_sig$(O) wm$(O) | 
|  | 376 	$(CC) $(LDFLAGS) -o $@ gen_xie_sig$(O) wm$(O) $(LIBS) | 
|  | 377 | 
|  | 378 cmp_xie_sig$(EXE): cmp_xie_sig$(O) $(LIBPREFIX)wm$(LIB) | 
|  | 379 	$(CC) $(LDFLAGS) -o $@ cmp_xie_sig$(O) $(WMLIB) $(LIBS) | 
|  | 380 | 
|  | 381 xieclean: | 
|  | 382 	$(RM) gen_xie_sig$(EXE) wm_xie_e$(EXE) wm_xie_d$(EXE) cmp_xie_sig$(EXE) | 
|  | 383 | 
| 3 | 384 # Xie2's algorithm (DWT, blind, binary, quantization, approximation image) | 
|  | 385 | 
|  | 386 xie2: gen_xie2_sig$(EXE) wm_xie2_e$(EXE) wm_xie2_d$(EXE) cmp_xie2_sig$(EXE) | 
|  | 387 | 
|  | 388 xie2test: xie2 | 
|  | 389 	gen_xie2_sig$(EXE) -n 800 gen_xie2_sig.c > ../sigs/xie2.sig | 
|  | 390 	wm_xie2_e$(EXE) -s ../sigs/xie2.sig -o ../watermarked/xie2_lena.pgm ../images/lena.pgm | 
|  | 391 	wm_xie2_d$(EXE) -s ../sigs/xie2.sig -o ../wms/xie2.wm ../watermarked/xie2_lena.pgm | 
|  | 392 	cmp_xie2_sig$(EXE) -s ../sigs/xie2.sig ../wms/xie2.wm | 
|  | 393 | 
|  | 394 xie2install: xie2 | 
|  | 395 	$(CP) gen_xie2_sig$(EXE) wm_xie2_e$(EXE) wm_xie2_d$(EXE) cmp_xie2_sig$(EXE) $(INSTALLDIR) | 
|  | 396 | 
|  | 397 xie2man: gen_xie2_sig.ps wm_xie2_e.ps wm_xie2_d.ps | 
|  | 398 | 
|  | 399 wm_xie2_e$(EXE): wm_xie2_e$(O) $(LIBPREFIX)wm$(LIB) $(LIBPREFIX)wavelet$(LIB) | 
|  | 400 	$(CC) $(LDFLAGS) -o $@ wm_xie2_e$(O) $(WMLIB) $(WAVELIB) $(LIBS) $(PGMLIBS) | 
|  | 401 | 
|  | 402 wm_xie2_d$(EXE): wm_xie2_d$(O) $(LIBPREFIX)wm$(LIB) $(LIBPREFIX)wavelet$(LIB) | 
|  | 403 	$(CC) $(LDFLAGS) -o $@  wm_xie2_d$(O) $(WMLIB) $(WAVELIB) $(LIBS) $(PGMLIBS) | 
|  | 404 | 
|  | 405 gen_xie2_sig$(EXE): gen_xie2_sig$(O) wm$(O) | 
|  | 406 	$(CC) $(LDFLAGS) -o $@ gen_xie2_sig$(O) wm$(O) $(LIBS) | 
|  | 407 | 
|  | 408 cmp_xie2_sig$(EXE): cmp_xie2_sig$(O) $(LIBPREFIX)wm$(LIB) | 
|  | 409 	$(CC) $(LDFLAGS) -o $@ cmp_xie2_sig$(O) $(WMLIB) $(LIBS) | 
|  | 410 | 
|  | 411 xie2clean: | 
|  | 412 	$(RM) gen_xie2_sig$(EXE) wm_xie2_e$(EXE) wm_xie2_d$(EXE) cmp_xie2_sig$(EXE) | 
|  | 413 | 
|  | 414 # Kundur's algorithm 2 (DWT, blind, binary, quantization, detail subbands, reference watermark) | 
|  | 415 | 
|  | 416 kund2: gen_kund2_sig$(EXE) wm_kund2_e$(EXE) wm_kund2_d$(EXE) cmp_kund2_sig$(EXE) | 
|  | 417 | 
|  | 418 kund2test: kund2 | 
|  | 419 	gen_kund2_sig$(EXE) -n 1000 -l 3 -q 2 gen_kund2_sig.c > ../sigs/kund2.sig | 
|  | 420 	wm_kund2_e$(EXE) -s ../sigs/kund2.sig -o ../watermarked/kund2_lena.pgm ../images/lena.pgm | 
|  | 421 	cjpeg -quality 70 ../watermarked/kund2_lena.pgm | djpeg | wm_kund2_d$(EXE) -s ../sigs/kund2.sig -o ../wms/kund2.wm | 
|  | 422 	cmp_kund2_sig$(EXE) -s ../sigs/kund2.sig ../wms/kund2.wm | 
|  | 423 | 
|  | 424 kund2install: kund2 | 
|  | 425 	$(CP) gen_kund2_sig$(EXE) wm_kund2_e$(EXE) wm_kund2_d$(EXE) cmp_kund2_sig$(EXE) $(INSTALLDIR) | 
|  | 426 | 
|  | 427 kund2man: gen_kund2_sig.ps wm_kund2_e.ps wm_kund2_d.ps | 
|  | 428 | 
|  | 429 wm_kund2_e$(EXE): wm_kund2_e$(O) $(LIBPREFIX)wm$(LIB) $(LIBPREFIX)wavelet$(LIB) | 
|  | 430 	$(CC) $(LDFLAGS) -o $@ wm_kund2_e$(O) $(WMLIB) $(WAVELIB) $(LIBS) $(PGMLIBS) | 
|  | 431 | 
|  | 432 wm_kund2_d$(EXE): wm_kund2_d$(O) $(LIBPREFIX)wm$(LIB) $(LIBPREFIX)wavelet$(LIB) | 
|  | 433 	$(CC) $(LDFLAGS) -o $@  wm_kund2_d$(O) $(WMLIB) $(WAVELIB) $(LIBS) $(PGMLIBS) | 
|  | 434 | 
|  | 435 gen_kund2_sig$(EXE): gen_kund2_sig$(O) wm$(O) signature$(O) | 
|  | 436 	$(CC) $(LDFLAGS) -o $@ gen_kund2_sig$(O) wm$(O) signature$(O) $(LIBS) | 
|  | 437 | 
|  | 438 cmp_kund2_sig$(EXE): cmp_kund2_sig$(O) $(LIBPREFIX)wm$(LIB) | 
|  | 439 	$(CC) $(LDFLAGS) -o $@ cmp_kund2_sig$(O) $(WMLIB) $(LIBS) | 
|  | 440 | 
|  | 441 kund2clean: | 
|  | 442 	$(RM) gen_kund2_sig$(EXE) wm_kund2_e$(EXE) wm_kund2_d$(EXE) cmp_kund2_sig$(EXE) | 
|  | 443 | 
|  | 444 # Kundur's algorithm 3 (DWT, blind, binary, quantization, detail subbands) | 
|  | 445 | 
|  | 446 kund3: gen_kund3_sig$(EXE) wm_kund3_e$(EXE) wm_kund3_d$(EXE) cmp_kund3_sig$(EXE) | 
|  | 447 | 
|  | 448 kund3test: kund3 | 
|  | 449 	gen_kund3_sig$(EXE) -n 1000 -l 2 -q 2 gen_kund3_sig.c > ../sigs/kund3.sig | 
|  | 450 	wm_kund3_e$(EXE) -s ../sigs/kund3.sig -o ../watermarked/kund3_lena.pgm ../images/lena.pgm | 
|  | 451 	wm_kund3_d$(EXE) -s ../sigs/kund3.sig -o ../wms/kund3.wm ../watermarked/kund3_lena.pgm | 
|  | 452 	cmp_kund3_sig$(EXE) -s ../sigs/kund3.sig ../wms/kund3.wm | 
|  | 453 | 
|  | 454 kund3install: kund3 | 
|  | 455 	$(CP) gen_kund3_sig$(EXE) wm_kund3_e$(EXE) wm_kund3_d$(EXE) cmp_kund3_sig$(EXE) $(INSTALLDIR) | 
|  | 456 | 
|  | 457 kund3man: gen_kund3_sig.ps wm_kund3_e.ps wm_kund3_d.ps | 
|  | 458 | 
|  | 459 wm_kund3_e$(EXE): wm_kund3_e$(O) $(LIBPREFIX)wm$(LIB) $(LIBPREFIX)wavelet$(LIB) | 
|  | 460 	$(CC) $(LDFLAGS) -o $@ wm_kund3_e$(O) $(WMLIB) $(WAVELIB) $(LIBS) $(PGMLIBS) | 
|  | 461 | 
|  | 462 wm_kund3_d$(EXE): wm_kund3_d$(O) $(LIBPREFIX)wm$(LIB) $(LIBPREFIX)wavelet$(LIB) | 
|  | 463 	$(CC) $(LDFLAGS) -o $@  wm_kund3_d$(O) $(WMLIB) $(WAVELIB) $(LIBS) $(PGMLIBS) | 
|  | 464 | 
|  | 465 gen_kund3_sig$(EXE): gen_kund3_sig$(O) wm$(O) signature$(O) | 
|  | 466 	$(CC) $(LDFLAGS) -o $@ gen_kund3_sig$(O) wm$(O) signature$(O) $(LIBS) | 
|  | 467 | 
|  | 468 cmp_kund3_sig$(EXE): cmp_kund3_sig$(O) $(LIBPREFIX)wm$(LIB) | 
|  | 469 	$(CC) $(LDFLAGS) -o $@ cmp_kund3_sig$(O) $(WMLIB) $(LIBS) | 
|  | 470 | 
|  | 471 kund3clean: | 
|  | 472 	$(RM) gen_kund3_sig$(EXE) wm_kund3_e$(EXE) wm_kund3_d$(EXE) cmp_kund3_sig$(EXE) | 
|  | 473 | 
| 0 | 474 # Dugad's algorithm (DWT, blind) | 
|  | 475 | 
|  | 476 dugad: gen_dugad_sig$(EXE) wm_dugad_e$(EXE) wm_dugad_d$(EXE) cmp_dugad_sig$(EXE) | 
|  | 477 | 
|  | 478 dugadtest: dugad | 
|  | 479 	gen_dugad_sig$(EXE) -o ../sigs/dugad.sig | 
|  | 480 	wm_dugad_e$(EXE) -s ../sigs/dugad.sig -o ../watermarked/dugad_lena.pgm ../images/lena.pgm | 
|  | 481 	wm_dugad_d$(EXE) -s ../sigs/dugad.sig -o ../wms/dugad.wm ../watermarked/dugad_lena.pgm | 
|  | 482 	cmp_dugad_sig$(EXE) -s ../sigs/dugad.sig ../wms/dugad.wm | 
|  | 483 | 
|  | 484 dugadinstall: dugad | 
|  | 485 	$(CP) gen_dugad_sig$(EXE) wm_dugad_e$(EXE) wm_dugad_d$(EXE) cmp_dugad_sig$(EXE) $(INSTALLDIR) | 
|  | 486 | 
|  | 487 dugadman: gen_dugad_sig.ps wm_dugad_e.ps wm_dugad_d.ps | 
|  | 488 | 
|  | 489 wm_dugad_e$(EXE): wm_dugad_e$(O) $(LIBPREFIX)wm$(LIB) $(LIBPREFIX)wavelet$(LIB) | 
|  | 490 	$(CC) $(LDFLAGS) -o $@ wm_dugad_e$(O) $(WMLIB) $(WAVELIB) $(LIBS) $(PGMLIBS) | 
|  | 491 | 
|  | 492 wm_dugad_d$(EXE): wm_dugad_d$(O) $(LIBPREFIX)wm$(LIB) $(LIBPREFIX)wavelet$(LIB) | 
|  | 493 	$(CC) $(LDFLAGS) -o $@  wm_dugad_d$(O) $(WMLIB) $(WAVELIB) $(LIBS) $(PGMLIBS) | 
|  | 494 | 
|  | 495 gen_dugad_sig$(EXE): gen_dugad_sig$(O) | 
|  | 496 	$(CC) $(LDFLAGS) -o $@ gen_dugad_sig$(O) $(LIBS) | 
|  | 497 | 
|  | 498 cmp_dugad_sig$(EXE): cmp_dugad_sig$(O) $(LIBPREFIX)wm$(LIB) | 
|  | 499 	$(CC) $(LDFLAGS) -o $@ cmp_dugad_sig$(O) $(WMLIB) $(LIBS) | 
|  | 500 | 
|  | 501 dugadclean: | 
|  | 502 	$(RM) gen_dugad_sig$(EXE) wm_dugad_e$(EXE) wm_dugad_d$(EXE) cmp_dugad_sig$(EXE) | 
|  | 503 | 
|  | 504 | 
|  | 505 | 
| 3 | 506 clean:	coxclean bruynclean kochclean corviclean xiaclean zhuclean xieclean kund3clean kund2clean \ | 
|  | 507 	dugadclean kimclean wangclean frid2clean toolsclean libraryclean waveletclean xie2clean | 
| 0 | 508 	$(RM) *$(O) *.ps ../sigs/* ../wms/* ../watermarked/* | 
|  | 509 | 
|  | 510 | 
|  | 511 man:	coxman bruynman kochman corviman xiaman xieman toolsman | 
|  | 512 | 
|  | 513 test:	coxtest bruyntest kochtest corvitest xiatest xietest dugadtest zhutest \ | 
| 3 | 514 	wangtest frid2test kimtest toolstest kund3test kund2test | 
| 0 | 515 | 
|  | 516 install: coxinstall bruyninstall kochinstall corviinstall xiainstall xieinstall \ | 
| 3 | 517 	dugadinstall zhuinstall wanginstall frid2install kiminstall toolsinstall kund3install kund2install | 
| 0 | 518 | 
|  | 519 depend: | 
|  | 520 	$(MAKEDEP) *.h *.c | 
|  | 521 |