zoukankan      html  css  js  c++  java
  • 利用MATLAB去除图片中的水印

    2012年12月24日15:51:14 第一次修改

    2011-09-10晚上,开始准备些成人高考数学的试题,上网找了半天,发现都是有水印的,于是心头火起,决定想办法把水印干掉。凭着上学期上过的一点数字图像处理,倒腾了两个小时,实现了去水印。

    原始图像截图如下,将此截图命名为r.jpg

    r

    从上图可见有红色的图案与黑色的“中国教育在线”字样的水印。

    一、 相关知识简介

    需要处理的图像是RGB图像,为M*N*3。灰度图像为M*N。没有颜色分量,若有8位二进制数表示,则从最暗(黑)到最亮(白)一共可以分为256级(0~255)。

    二、 解决方案描述

    从RGB图像中抽取一个彩色分量来,则可以得到一个灰度图像。然后,将该图像中满足一定条件的灰度值全部变成白色即可。如灰度>100的地方全部变成白色,因为最终只要得到黑字白底的图像,所以这么做是可取的。

    三、 主要步骤与代码描述

    3.1 输入图像

    使用imread()函数读入一幅带水印的图像,得到描述这个图像的灰度矩阵。

    >> r=imread('r.jpg')

    得到图像矩阵。

    3.2 获取图像维度

    用size()函数测量该图像的尺寸,这个尺寸在后面的代码中将会用到。

    >> size(r)

    结果如下图所示

    2012-12-24_155817

    从上图可见该矩阵有203行,935列,3维(R,G,B三种颜色分量各一维)

    3.3 编写脚本文件

    编写M脚本程序,实现将中间灰度值变为255(白色)的功能。因为要修改每一个矩阵元素的值(即各像素的灰度值),这里会用到之前求得的行列数。

    脚本文件与注释如下:

    r=imread('r.jpg');     %读入图像
    rR=r(:,:,1);            %抽取原图像r的R,G,B的其中一维得到灰度矩阵rR。
                               %得到灰度矩阵还可以用函数“rgb2gray()”完成
    rg=rR;                   %为灰度矩阵重新命名
    a=170;                  %设置阈值
    for i=1:203
       for j=1:935         %搜索每一个矩阵元素,这里用到了前面求得的行列数
         if a<rg(i,j)
            rg(i,j)=255;    %如果颜色不够深就代表是水印,将其变为白色
         end
       end
    end
    imshow(rg)            %显示去水印后的图像

    效果见下图

    2012-12-24_154716

    3.4 修改

    用imshow()显示处理后的图像,并根据结果来调整阈值,使得在去掉水印的基础上,所得图像最清晰。从我的经验来看,原始图片中的水印与字体以及白色背景的亮度相差越大的情况下,去水印效果越好。另外,水印偏什么颜色,就抽取什么颜色分量作为灰度矩阵比较好。如本例中的水印图案有红色,那么我抽取的就是红色分量。

    3.5 保存去水印后的图像

    得到满意的图像后,使用MATLAB的file->print View来设置打印页面,特别注意要选择将页面填充满。因为MATLAB处理后的图像好像不会全尺寸显示,直接打印的话是很小的。设置好后选择打印机为pdfFactroy就将结果保存为PDF格式了。如果直接保存的结果是对的,就不用按上述方法来打印了。

    参考资料:

    【1】数字图像处理(MATLAB版),电子工业出版社,冈萨雷斯,中文版,阮秋琦等译

    PS:本例脚本文件点击以下链接下载

    https://files.cnblogs.com/pingyidou/qushuiyin.rar

  • 相关阅读:
    一个GOOD的Idea需要伯乐发觉-致敬错过的IDEA
    企业增量发布项目-个人步骤
    JAVA 发送邮件代码---发送HTML内容
    JAVA 发送邮件代码---发送文本内容: 内容使用 进行换行
    Myeclipse8.5开发-安装一:Myeclipse8.5注册码生成程序
    Myeclipse8.5开发-插件安装二:安装findbugs方法
    页面布局
    Flex布局(CSS Flexbox)
    CSS垂直居中的11种实现方式
    CSS3中的px,em,rem,vh,vw辨析
  • 原文地址:https://www.cnblogs.com/pingyidou/p/2237306.html
Copyright © 2011-2022 走看看