忙里偷闲:神秘的水印去除术

一边被老板骂,一边还不想干活。
看到网上有人在找 大批量水印去除的方法,自己动手用matlab写了一个,如果能博得大家一笑就好了。

废话少说直接上效果图在这里插入图片描述
在这里插入图片描述
图片来自百度文档。
以下是代码


I=imread('C:\Users\Administrator\Desktop\ppt\图像处理\神秘的水印去除术\p1.png');%读入图像
 figure, imshow(I);%显示去水印前的图像



 I1 = I(:,:,1);%抽取原图像r的R,G,B的其中一维得到灰度矩阵
% figure, imshow(t1);
 I2 = I(:, :, 2);
% figure, imshow(t2);
 I3 = I(:, :, 3);
% figure, imshow(t3);


 t = I(150:210, 70:276, 1:3);
figure, imshow(t);
t1 = t(:,:,1);
% figure, imshow(t1);
 t2 = t(:, :, 2);
% figure, imshow(t2);
 t3 = t(:, :, 3);
% figure, imshow(t3)

%得到水印像素点  在 RGB上的 亮度
[m,n] = size(t1);
ptmun = zeros(1,255);
ft=1;
for i = 1:m
   
    for j = 1:n 
        f=0;
        for k = 1:253
            if t1(i,j) == ptmun(k)
            f=1;
            end
        end
        if f==0
            ptmun(ft)= t1(i,j);
            ft=ft+1;
        end
    end
end
ptmun1 = sort(ptmun);
ptmun2 = ptmun1(ptmun1~=0)
 

%扣除水印的像素
[m,n] = size(I1);
for i = 1:m
    for j = 1:n
        for k = 1:62
            if I1(i,j) == ptmun2(k)
                I1(i,j) = 255;
                break;
            end
        end
    end
end
figure, imshow(I1);


 

原理很简单,人工选取水印的位置,将水印的灰度值记录下来,然后遍历全图,扣除对于的灰度值。
如果是彩色图像,就需要根据RGB模型,分布对三个图层进行处理在和为一幅图。
但本例中的为灰度图,所以就简单处理了。
效果看来还可以,对于同一类的水印图,不需要重复人工选取水印位置,直接使用记录第一次记录的数值,对之后的图像进行处理即可。以此达到多图水印除去的目的。

不足之处:对图像文理产生形变的水印无法去除。

本文纯属娱乐,如有兴趣,请参看 图像处理 相关书籍。
下次有机会(不想干活的时候),再找找有趣的事情干干吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值