【问题标题】:how to embed a watermark on an image using edge in matlab?如何在matlab中使用边缘在图像上嵌入水印?
【发布时间】:2021-09-13 11:24:36
【问题描述】:

在一个学校项目中,我想执行以下步骤以在 matlab 中制作水印图像

  • 从图像中提取边缘
  • 在这条边上插入一个标记
  • 重建图像
  • 提取标记

有人可以给我一个链接,让我知道如何做或帮助我做到这一点吗? 提前谢谢你

【问题讨论】:

  • 真的,你不能谷歌一下吗?我找到了thisthis...

标签: image-processing matlab


【解决方案1】:

您想为图像添加水印吗?为什么不只是覆盖整个事情。

如果你有图片

img = imread('myimage.jpg')
wm  = imread('watermark.jpg')

您可以将水印的大小调整为图像的大小

wm_rs = imresize(wm, [size(img,1) size(img,2)], 'lanczos2');

img_wm(wm_rs ~= 0) = wm_rs; %This sets non-black pixels to be the watermark. (You'll have to slightly modify this for color images) 

如果你想把它放在图像的边缘,你可以像这样提取它们

edges = edge(rgb2gray(img),'canny')

然后可以将边缘存在的像素设置为水印像素

img_wm = img;
img_wm(edges ~= 0) = wm_rs(edges~=0);

如果您想要透明度,您可以混合使用 img 和 wm_rs 像素值,而不是直接分配。

您可能需要调整我对彩色图像所说的一些内容,但大多数应该是相同的。

【讨论】:

    【解决方案2】:

    这里有一个很好的简单示例,您可以使用 MATLAB(在空间域中)嵌入水印:http://imageprocessingblog.com/digital-watermarking/

    【讨论】:

      【解决方案3】:

      参见下面的示例(R2017b 或更高版本):

      % your params
      img = imread('printedtext.png');
      Transparency = 0.6;
      fontColor = [1,1,1]; % RGB,range [0,1]
      position = [700,200];
      
      %% add  watermark
      mask = zeros(size(img),'like',img);
      outimg = insertText(mask,position,'china', ...
          'BoxOpacity',0,...
          'FontSize',200,...
          'TextColor', 'white');
      bwMask = imbinarize(rgb2gray(outimg));
      finalImg = labeloverlay(img,bwMask,...
          'Transparency',Transparency,...
          'Colormap',fontColor);
      imshow(finalImg)
      

      【讨论】:

      • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
      猜你喜欢
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-04
      • 1970-01-01
      • 2017-08-08
      • 1970-01-01
      相关资源
      最近更新 更多