假设复印的图像为
手动指定欲删除区域的点
第一种是手动指定欲删除区域的一个或多个点, 并利用RegionBinarize来二值化图像
|
imgdel = RegionBinarize[img, {{1220, 1341}}, .25] |
这里, {1220,1341}是黑边中的一点, Mathematica可以通过在图像上右键获得对应点坐标.
最后利用Inpaint去水印从原图中删除黑边.
自动生成欲删除区域
利用FillingTransform函数我们可以自动定位黑边区域, 从而再利用去水印Inpaint函数删除黑边.
|
Inpaint[#, ColorNegate@FillingTransform[#]] &@img |
一个完整的处理
接下来, 我将演示如何实际地批量处理一个文档.
定义处理函数
|
DelBlack[img_] := Inpaint[img, ColorNegate@FillingTransform[img]] |
定义工作目录
为了方便, 我们将所有待处理的图像放到一个目录中, 请通过插入->”文件路径”(并删除最后的文件路径, 因为我们要的是该文件所在目录), 这里我假设是在
C:\Users\van\Desktop\new下, 则
|
SetDirectory[“C:\\Users\\van\\Desktop\\new”]; |
查找工作目录下所有图像文件, 请自行添加没有的扩展名
|
FileList = FileNames[{“*.jpg”, “*.png”, “*.gif”}]; |
由于数据巨大, 尝试采用并行运算(多核)
|
DistributeDefinitions[DelBlack] |
遍历整个文件列表, 并将处理后的图片放入当前目录的\new\目录下
|
Parallelize[Do[Export[“new\\”<>i, DelBlack[Import[FindFile[i]]]], {i, FileList}]] |
效果如图


本作品采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本站内容必须也遵循署名-非商业用途-保持一致的创作共用协议.
发表回复