从图像中提取水印
Extract watermark from image
我有 1 张图片的 2 个版本
是否可以得到代表此水印的透明png文件? ImageMagick 可以做到这一点吗?
您可以通过计算两幅图像之间的差异(减去两幅图像的像素并计算绝对值)来实现您的目标。这将导致:
ImageMagick 好像可以做图像减法,look here:
代码:
convert image2 image1 -compose minus -composite result
SilverMonkey 具有使用 Imagemagick 的基本解决方案。但请求是透明的 PNG。因此,我将在他的代码中添加更多内容,通过添加 -alpha copy 使其透明。
convert kitty2.jpg kitty1.jpg -compose minus -composite -auto-level -alpha copy watermark1.png
这是另一种通过阈值为水印制作二进制掩码的方法。但它会留下很多噪音。所以我使用一些 morphology open 来消除噪音,然后使用一些 morpholgy close 来尝试填充文本被打断的地方。然后我添加 -alpha copy 使图像透明。但是文字是白色的,原来的水印是浅灰色的。所以我关闭 alpha,乘以 0.75 以在不影响 alpha 通道的情况下将白色字母的亮度降低为灰色。然后重新打开 Alpha 通道。
convert kitty2.jpg kitty1.jpg -compose minus -composite -threshold 0.6% -morphology open diamond:1 -morphology close octagon:1 -alpha copy -alpha off -evaluate multiply 0.75 -alpha on watermark2.png
有关形态学的更多信息,请参阅https://imagemagick.org/Usage/morphology/
我有 1 张图片的 2 个版本
是否可以得到代表此水印的透明png文件? ImageMagick 可以做到这一点吗?
您可以通过计算两幅图像之间的差异(减去两幅图像的像素并计算绝对值)来实现您的目标。这将导致:
convert image2 image1 -compose minus -composite result
SilverMonkey 具有使用 Imagemagick 的基本解决方案。但请求是透明的 PNG。因此,我将在他的代码中添加更多内容,通过添加 -alpha copy 使其透明。
convert kitty2.jpg kitty1.jpg -compose minus -composite -auto-level -alpha copy watermark1.png
这是另一种通过阈值为水印制作二进制掩码的方法。但它会留下很多噪音。所以我使用一些 morphology open 来消除噪音,然后使用一些 morpholgy close 来尝试填充文本被打断的地方。然后我添加 -alpha copy 使图像透明。但是文字是白色的,原来的水印是浅灰色的。所以我关闭 alpha,乘以 0.75 以在不影响 alpha 通道的情况下将白色字母的亮度降低为灰色。然后重新打开 Alpha 通道。
convert kitty2.jpg kitty1.jpg -compose minus -composite -threshold 0.6% -morphology open diamond:1 -morphology close octagon:1 -alpha copy -alpha off -evaluate multiply 0.75 -alpha on watermark2.png
有关形态学的更多信息,请参阅https://imagemagick.org/Usage/morphology/