过冷水诚挚邀请你加入Matlab仿真秀官方交流群进行Matlab学习、问题咨询、 Matlab相关资料下载:927550334
之前过冷水一直有和大家一起学习Matlab图像处理应用,一些小技巧的使用可以有效的提高工作品质,过冷水在使用WPS保存图片的时候就遇了讨厌的事,需要添加水印,很讨厌,于是就想着该如何破解水印,属于就开始摸索,本期过冷水就和大家分享Matlab去水印的实现。
具体程序可以写为:
g= imread('2.png'); f=imread('1.png');%有水印的图片 v=255-(g-f); f1=255-(g(:,:,1)-f(:,:,1)); f2=255-(g(:,:,2)-f(:,:,3)); f3=255-(g(:,:,3)-f(:,:,3)); u(:,:,1)=f1; u(:,:,2)=f2; u(:,:,3)=f3; figure subplot(1,3,1); imshow(f); subplot(1,3,2); imshow(v); subplot(1,3,3); imshow(u); imwrite(u,'3.jpg')
也可写为:
g= imread('2.png'); f=imread('1.png');%有水印的图片 imshow(f) u=255-(g-f); subplot(1,2,1) imshow(f) subplot(1,2,2) imshow(u)
根据图像处理结果来看很完美,证明像素值相减的方法是可以的,由此想到是否可以逆向运用,添加水印?
既然是逆过程,过冷水自然尝试将u=255-(g-f)改成u=255-(g f),然而运行结果为
g= imread('5.jpg'); f=imread('8.jpg');%有水印的图片 u=255-(g f); figure subplot(1,3,1); imshow(g) subplot(1,3,2); imshow(f) subplot(1,3,3); imshow(u)
经过过冷水做简单的像素分享发现应该直接用u=g f,运行结果依旧不对。
g= imread('5.jpg'); f=imread('8.jpg');%有水印的图片 u=g f; figure subplot(1,3,1); imshow(g) subplot(1,3,2); imshow(f) subplot(1,3,3); imshow(u)
经过多次尝试采用组合u=255-g f
g= imread('5.jpg'); f=imread('8.jpg');%有水印的图片 u=255-g f; figure subplot(1,3,1); imshow(g) subplot(1,3,2); imshow(f) subplot(1,3,3); imshow(u) subplot(1,2,1) figure; imshow(f) subplot(1,2,2) imshow(u) imwrite(u,'6.jpg')
完美!其实在摸索过程中,发现u=g f理论上可行,为何实际不可行?然后就查像素特点,发现是水印图片像素有问题,如果对水印图片进行透明处理,其实也是可以的。
g= imread('9.png'); f=imread('8.jpg');%有水印的图片 v=g f; figure subplot(1,3,1); imshow(g); subplot(1,3,2); imshow(f); subplot(1,3,3); imshow(v);
加水印和去水印的思路其实很简单,学会这些小技巧,不用安装Ps也可行进行图片处理,图像处理必须要了解其背后逻辑,才能够正确应用,不然就像素不同组合就有不用结果,不能以盲人摸象般胡乱调试,还是要有依据才可以的,本期过冷水要和读者分享的图像处理就这么多,有问题可留言讨论。
过冷水发表于 仿真秀 平台原创文章,未经授权禁止私自转载,如需转载请需要和作者沟通表明授权声明,未授权文章皆视为侵权行为,必将追责。如果您希望加入Matlab仿真秀官方交流群进行Matlab学习、问题咨询、 Matlab相关资料下载均可加群:927550334。
精品回顾