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

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

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

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

一、 相关知识简介

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

二、 解决方案描述

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

三、 主要步骤与代码描述

3.1 输入图像

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

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

得到图像矩阵。

3.2 获取图像维度

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

>> size(r)

结果如下图所示

从上图可见该矩阵有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)=255;    %如果颜色不够深就代表是水印,将其变为白色

end

end

end

imshow(rg)            %显示去水印后的图像

效果见下图

3.4 修改

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

3.5 保存去水印后的图像

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

参考资料:

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

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

matlab去除图片水印_利用MATLAB去除图片中的水印相关推荐

  1. matlab相关性分析频谱_利用Matlab绘制正弦信号的频谱图并做相关分析[共6页]

    <利用Matlab绘制正弦信号的频谱图并做相关分析[共6页]>由会员分享,可在线阅读,更多相关<利用Matlab绘制正弦信号的频谱图并做相关分析[共6页](6页珍藏版)>请在人 ...

  2. matlab相关性分析频谱_利用matlab怎样进行频谱分析、、

    利用 matlab 怎样进行频谱分析 图像的频率是表征图像中灰度变化剧烈程度的指标, 是灰度在平面空间上的 梯度. 如: 大面积的沙漠在图像中是一片灰度变化缓慢的区域, 对应的频率值很 低:而对于地表 ...

  3. matlab的qammod函数_利用matlab实现16QAM调制

    利用matlab实现16QAM调制 2020-12-22 一.随机信号的调制第一个示例描述以下问题: 下表描述了解决此问题的关键任务和相应的通信工具箱函数,其中选择基带16QAM作为调制制式以及加性高 ...

  4. matlab文件名加前缀_利用MATLAB批量对文件重命名

    利用MATLAB批量对文件重命名 tags: - MATLAB - 科研软件 序 没paper,实验肯定要做啊,不做就毕不了业 . 编程这方面,编程是不可能编程的,这辈子不可能编程的 . paper又 ...

  5. matlab低通滤波器库函数代码_利用Matlab filterDesigner 工具生成FIR滤波器函数,并调用实现低通滤波...

    本文使用的开发环境为:Win10 Matlab2018a 版本. 在matlab命令窗口输入:filterDesigner命令,即可打开filterDesigner设计工具. 按照下图调整FIR低通滤 ...

  6. matlab计算斜方差_利用matlab进行协方差运算

    本文全部参考自: http://www.cnblogs.com/welen/articles/5535042.html#undefined 知识点一: MATLAB中四个取整函数具体使用方法如下: M ...

  7. matlab 统计数组频数_利用MATLAB进行频率分析(统计数组中元素个数)

    在日常计算,工作中使用MATLAB经常会遇到这样的一个问题:如何统计数组中各数字(元素)出现的频数.频率和累积频率?本文就按照案例演示的方式做一个总结. 第一种方法:调用MATLAB自带的函数tabu ...

  8. matlab 频谱图例子_利用matlab怎样进行频谱分析

    图像的频率是表征图像中灰度变化剧烈程度的指标,是灰度在平面空间上的梯度.如:大面积的沙漠在图像中是一片灰度变化缓慢的区域,对应的频率值很低:而对于地表属性变换剧烈的边缘区域在图像中是一片灰度变化剧烈的 ...

  9. matlab图片拼接变成白的,利用matlab实现对图片的拼接

    利用matlab实现对图片的拼接 (图像处理的课堂小作业,简单地手打代码,有问题请联系) 1.效果图 (先看效果图,后思考怎么实现) 原图: 简单拼接: 再进一步操作,加了线: 2.原理 1.matl ...

  10. matlab如何截取图像的中间部分_利用matlab提取并分割RGB图像中的某一个已知像素值的图像...

    已知一副RGB图像中的的像素值,利用matlab将其分割出来并以二进制图像形式显示: %extract.m clear all; I=imread('new_original.png'); figur ...

最新文章

  1. 树莓派(Raspberry Pi)修改时区
  2. 用C++的类重载高精度加法,乘法和等于符号
  3. 数字图像处理实验(14):PROJECT 06-01,Web-Safe Colors
  4. Matlab:Matlab中常用的函数、案例详细攻略
  5. iOS 网络输入流提供请求体(适用于大容量内容)
  6. XShell配置Socket5代理
  7. 如何处理Angular应用的错误消息: No pipe found with name async
  8. mysql数据库进阶_MySQL T2-数据库进阶?
  9. 关于MFC遇到的一系列类型转换问题
  10. srcnn 双三次插值_用于数字成像的双三次插值技术
  11. 安卓dts音频解码_家庭影院三维音效技术应用之DTS:X摆位
  12. 编程中的Eric常用的编程单词的缩写
  13. 动手学深度学习Pytorch Task06
  14. 不用安装界面器实现系统支持xvid编码器
  15. 太阳光轨迹软件_巧用虚拟天文馆软件Stellarium演示太阳周日视运动轨迹_贺志康...
  16. 【札记】Python处理TSV文件以及144790个英语单词的注音、释义、例句的.sql和.tsv文件下载
  17. 信贷风控评分卡模型(上)_Give Me Some Credit(技术实现过程)
  18. Linux随笔1 - Linux哲学思想与安装
  19. iiOS 6 新特性
  20. linux中shell命令行缩进,Linux下几个实用的bash命令 | 旺旺知识库

热门文章

  1. 微信小程序tabBar边框加|上阴影
  2. postman接口测试工具的使用攻略
  3. 如何把视频文件转换成图片
  4. 基于django的视频点播网站开发-step15-项目部署 1
  5. 微波工程学习1-电磁理论
  6. Linux ERROR: configuration failed for package ‘rgeos’
  7. python opencv双目测距_使用OpenCV/python进行双目测距
  8. Qt通过域名获取IP地址
  9. 一些好看的渐变色(配色)网站推荐
  10. 2022腾讯云学生云服务器申请攻略(25岁以下免学生认证)