使用matlab为图片添加一个水印(超简单版)

本文采用的添加水印方法原理超级简单,首先说原理:

是先用ps弄一张背景全黑,只有要加的水印字是白色的图。

原理

matlab如果直接使用imread函数读取图像的话,在matlab中存储的是uint8类型的矩阵

无论是tif格式、jpg格式还是png格式,直接读取进来就会是uint8格式。

重点是在这种矩阵中,0是纯黑色,255是纯白色

所以最简单的加水印的办法就是用ps搞一张背景为全黑色的水印图,然后直接使用矩阵加法进行叠加即可,若想加上不透明度,那就使水印矩阵点乘一个alpha变量即可。

矩阵相加的重点就是得先对水印图进行调整,使矩阵维度与原图相同。

function watermarkedImage = addWatermark(mainImage, watermarkImage,alpha)
    % 调整水印图片大小以适应主图片
    [rows, cols] = size(mainImage);
    watermarkImage = imresize(watermarkImage, [rows cols]);
    % 将水印图片叠加到主图片上
    watermarkedImage=mainImage+watermarkImage.*alpha;  
end

以上是基于原理给出的代码,自变量是原图,水印图,不透明度alpha(0,1)

步骤

首先在ps中新建一个背景为黑色的图层

然后将水印放在你想叠加的部分,接着将其导出为png/jpg/tif格式

然后在matlab中使用此函数即可:

以下为总代码,对于rgb图片来说,要先把它转化成灰度图才能进行加水印操作,因为这两个矩阵必须维度相同,rgb图片是三维的uint8矩阵,而gray图是二维的uint8矩阵。

clear;clc;
I1 = imread('2_1.jpg');
I1=rgb2gray(I1);
watermarkImage= imread('test.jpg');
newI1=addWatermark(I1,watermarkImage,0.7);
subplot(1,2,1);
imshow(I1);
subplot(1,2,2);
imshow(newI1);
function watermarkedImage = addWatermark(mainImage, watermarkImage,alpha)
    % 调整水印图片大小以适应主图片
    [rows, cols] = size(mainImage);
    watermarkImage = imresize(watermarkImage, [rows cols]);
    % 将水印图片叠加到主图片上
    watermarkedImage=mainImage+watermarkImage.*alpha;  
end

填加水印效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值