初试 Matlab 之去除水印
这几天很痛苦地去学习了下用 Matlab 来处理图像,其实那些算法我觉得还不算很难理解,可是 Matlab 这种反人类的语法(可能对于我来说是这样吧,毕竟熟悉了 C++ / Java 的语法一时间很难转过来)折磨了我好久。
前些天在网上看到了一张图片:

想 po 上朋友圈,可又觉得右下角的水印被人看着好像不是很好,于是就想能否利用刚学会的一丁点儿的 Matlab 知识来把水印去掉呢?Show you my low code:
首先,读取图片:
>> I = imread('D:\课程文件\图像处理\image\beizi.jpg');
然后,目测下水印在原图中的大概位置,把它提取出来:
>> t = I(:, :, :);
imshow(t) 显示出来看看,是这样子的:

然后分别把 t 的 rgb 3 个分量都提取出来:
>> t1 = t(:, :, );
>> figure, imshow(t1);
>> t2 = t(:, :, );
>> figure, imshow(t2);
>> t3 = t(:, :, );
>> figure, imshow(t3);
分别是这样的:

因为 t2 和 t3 比较相似,而且黑白分明,直接看下两个矩阵里的内容,发现文字部分确实和黑色部分的灰度值相差很大,所以不管三七二十一,直接暴力砍掉那些白色的部分,也就是文字:
[m,n] = size(t2) for i = :m
for j = :n
if t2(i,j) >=
t2(i,j) = ;
end
end
end
对 t3 作同样的处理,然后两子图效果如下:

for i = :m
for j = :n
if t3(i,j) >=
t3(i,j) = ;
end
end
end
接下来到 t1 了,因为白色文字的灰度值很接近背景颜色,所以需要很小心地找好边界值:
for i = :m
for j = :n
if t1(i,j) >=
t1(i,j) = ;
end
end
end
imshow(t1);
效果如下:(感觉还可以~)

然后就是把处理好的 3 个子图合并起来:
for i = :m
for j = :n
t(i,j,) = t1(i,j);
t(i,j,) = t2(i,j);
t(i,j,) = t3(i,j);
end
end
figure, imshow(t);
合并好的图效果如下:(嘻嘻,即将成功的感觉~)

最后,把这个经过处理的原图的一角放回到原图中:
for i = :
for j = :
I(i + , j + , :)=t(i, j, :);
end
end
figure, imshow(I);
最终得出的图如下:

虽然能看出淡淡的痕迹,但第一次弄这个,感觉就这样吧 o(* ̄ ▽  ̄*)o
希望高手能指教下~~
初试 Matlab 之去除水印的更多相关文章
- Atitit.去除水印的方案
Atitit.去除水印的方案 1.1. 查找水印的位置 Kegwa imgd posit zo ok le .. Auto find d zo troub ...manu easy 1.2. 还原去除 ...
- AnyChartStock去除水印方法
最近在使用AnyChartStock的图表,功能很强大,但下载过来是有水印的,虽然网上也有很多破解无水印的版本,但基本都是AnyChart的,AnyChartStoc的几乎没有.所以自己尝试着去除水印 ...
- PS小实验-去除水印
PS小实验-去除水印 水印是一些品牌商覆盖在图片或视频上的一个商标logo或小文本,比如大家最讨厌的百度logo,作者本人也是比较讨厌水印的,让好端端的一张图片变得美中不足. 个人觉得用photosh ...
- pdf 移除密码 去除水印 批量去除水印 编辑文字 批量替换文字
1.pdf除密码: http://pan.baidu.com/share/link?shareid=308194398&uk=370045712 2.去除水印:http://wenku.ba ...
- python利用opencv去除水印方法
OpenCV(Open Source Computer Vision Library)是一个跨平台计算机视觉库,实现了图像处理和计算机视觉方面的很多通用算法 在python中可以利用opencv来去除 ...
- winform工具1-图片去除水印
效果图: 思路: 1.获取图片 2.处理水印 3.保存处理的图片 代码: 获取图片: private void button1_Click(object sender, EventArgs e) { ...
- [Python]爬虫获取知乎某个问题下所有图片并去除水印
获取URL 进入某个知乎问题的主页下,按F12打开开发者工具后查看network面板. network面板可以查看页面向服务器请求的资源.资源的大小.加载资源花费的时间以及哪些资源加载失败等信息.还可 ...
- C# 处理PPT水印(二)——去除水印效果(文本水印、图片水印)
本文将对C#处理PPT幻灯片中的水印进一步说明和介绍.在C# 处理PPT水印(一)一文中,分享了如何插入水印效果的方法,包括插入文字水印效果.插入图片作为水印效果两种情况,那对于不需要水印效果的情况, ...
- PS快速去除水印方法
步骤 第一步:打开PS软件,鼠标左键单击左上角"文件"-"打开",选择一张图片 第二步:鼠标左键单击左边的工具栏"矩形选框工具" 第三步:鼠 ...
随机推荐
- LightOj 1278 - Sum of Consecutive Integers(求奇因子的个数)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1278 题意:给你一个数n(n<=10^14),然后问n能用几个连续的数表示; 例 ...
- android如何获取到启动类的包和类路径
ArrayList<String> list = new ArrayList<String>(); private List<ResolveInfo> mApps; ...
- vi/vim
config file location 1. MinGW: C:\MinGW\msys\1.0\share\vim\vimrc 2. Linux: home config file content ...
- App_global.asax.pdb: 另一个程序正在使用此文件,进程无法访问。
页面修改后,浏览报错,信息如下. 编译错误 说明: 在编译向该请求提供服务所需资源的过程中出现错误.请检查下列特定错误详细信息并适当地修改源代码. 编译器错误消息: CS0042: 创建调试信息文件“ ...
- Windows Server 2008 R2 辅域控制器如何升级成主域控制器
一.实验模拟故障问题: zhuyu公司架设了一台主域控制器和一台辅域控制器,某一天,zhuyu公司的主域控制器系统崩溃,主域控制器系统也进不去. 虽然辅域控制器可以暂时代替主域控制器的普通工作,但是特 ...
- 如何确定某个counter对应的rrd文件
info.py #!/usr/bin/env python import requests import json import sys d = [ { "endpoint": s ...
- MySQL字符编码
数据表tb的col列编码为latin1.而实际存储的字符是gbk编码时,用下面的语句可以查看到非乱码的原始字符串. select convert( binary(col) using gbk) fro ...
- RW-50004 While Running adrunfmw during EBS 12.2 Installation
安装过程中报错: 日志文件信息: Executing command: /app/R1220/startCD/Disk1/rapidwiz/jre/Linux_x64//bin/java -cp /a ...
- linux 下查看系统资源和负载,以及性能监控
1,查看磁盘 df -h 2,查看内存大小 free free [-m|g]按MB,GB显示内存 vmstat 3,查看cpu cat /proc/cpuinfo 只看 ...
- svg学习(七)polygon
<polygon> 标签用来创建含有不少于三个边的图形. <?xml version="1.0" standalone="no"?> & ...