Re: [问题] 傅立叶滤镜与隐形水印

楼主: AmibaGelos (Amiba Gelos)   2016-12-04 17:01:09
闲闲没事做来玩玩看lol
WaterMark[pic_?(3 == ArrayDepth@# &), mark_?(3 == ArrayDepth@# &)] /;
And @@ Thread[Dimensions[pic] >= Dimensions[mark]] :=
With[{lx = Length@mark, ly = Length@mark[[1]],
F = FourierDCT[#, 1] & /@ # &, ch = Transpose[#, {2, 3, 1}] &,
chinv = Transpose[#, {3, 1, 2}] &},
With[{XPerm = RandomSample@Range@lx,
YPerm = RandomSample@Range@ly}, {chinv@
Map[Round@Min[Max[#, 0], 255] &,
F[F@ch@pic + (PadLeft[#, Most@Dimensions@pic] & /@
ch@Table[mark[[i, j]], {i, XPerm}, {j, YPerm}])], {-1}],
Reverse@chinv[
Table[#[[i, j]], {i,
SortBy[Transpose@{Range[-lx, -1], XPerm}, Last][[All,
1]]}, {j,
SortBy[Transpose@{Range[-ly, -1], YPerm}, Last][[All,
1]]}] & /@ F@ch@#] &}]]
用Lena测试
foreground = Import["ExampleData/lena.tif", "Data"];
background =
Rasterize[Style["清心也可以", 20, White], Background -> Black][[1, 1]]/4;
{res, per} = WaterMark[foreground, background];
Image@(per@res/(255./4))
GraphicsRow[{Image@(res/255.), Image@(foreground/255.)}]
恩看起来还不错~不过我不知道如何用MMA测试修图的影响就是LOL
楼主: AmibaGelos (Amiba Gelos)   2016-12-04 17:11:00
作者: jurian0101 (Hysterisis)   2016-12-05 15:12:00
来玩来玩
楼主: AmibaGelos (Amiba Gelos)   2016-12-06 12:05:00
作者: loterpeter (Vincent)   2016-12-08 20:58:00
怒推阿米巴

Links booklink

Contact Us: admin [ a t ] ucptt.com