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