- 作者帖子
二楞书童游客请教有没有办法,可以自动或者批处理的方式,将图一的左右两边,切成图二或者图三的样子。
使用ImageMagick、老马软件或者其他工具、程序都可以。谢谢。
图一 --> 图二:切除多余的页面厚度画面。
图一 --> 图三:切除多余的页面,到黑色竖线为止。
图一原图:
图二:切边方式效果一:
图三:切边效果二:
z3243游客用老马的ComicEnhancerPro(CEP)
1.选择“扫描书籍处理”,打开图片文件夹。
2.读取图片列表后选择“版面”,在新界面的右侧用红框选取图片保留部分,“页面大小”选择“内容框大小”(如果需要保留原图尺寸,可以选择填白),然后点击“确定”。
3.点击“确定”后会返回到上一界面,这里点击“应用”,将切割的参数应用到“所有图像”。
由于扫描图片的两侧可能宽度不同,应用后要大致翻看一下,有偏离的情况(一般是从某页开始连续)可以重复上一步的操作,返回后点击“应用到:当前图像之后的所有图像”。
4.图片切好后点击红框的位置批量导出即可。默认的位置是在原文件夹下新增的“out”文件夹
二楞书童游客谢谢z3243 详细图文解说,老马的 CEP 挺好的,但似乎只适用于处理少量图片。
如果需要处理大量图片,有没有不需要大量人工干预的方法(例如不需要逐张图片检查)?
崇鹂游客PS“魔棒工具”,把参数调得很深,应该可以,但比较烦难。可能要配合某种AI自动去边。
图一:图书馆扫描这些书的时候是左右移动、歪的,图一的效果是用PS“魔棒工具”去“白边”,能做到这样已是基本居中。
图二:书籍有厚度,随着翻动拍摄,右边书页越来越多,左边书页越来越少,版面还是有细微左右移动。而且往往颜色很接近。就是说想进一步切除“书籍厚度”,切到图二这种平面效果, 用固定的范围去裁切还是不行的,只能用PS“魔棒工具”或某种自动识别工具,重新调参数切一遍。
例如内阁文库这样图,抠到图二效果后,左右页歪斜、宽度不一,这些先天歪斜的图切尽了可能更不能看了。我记得那些玩拼版的大佬说过,都是一张图一张图去修的...
二楞书童游客这种方册一般都有四条明显的黑框,如果能用 ImageMagick 或者 OpenCV 定位黑框的位置,然后以黑框位置作为参考点,删除(黑框位置+需要保留的边距)以外的,大概能切到及格水平。 AI 确实应该在这类处理能发挥很大作用。
空空如也游客Adobe Acrobat 7.0 Professional,这个非常老的老版本(不要再升级,升级了就有问题了,WIN7安装提示错误,但不影响使用,win10没有用过),也很方便PDF文件的裁切。
迈克猫游客我一般用X-change pdf批量裁剪,部分国图的书也可以去掉水印
z3243游客如果要切的书都是这种框线很明显的(相应地,没有行线或者行线不明显,这很重要),可以用CEP在“纸张”处选择“单页”。图片里是没有调过的默认状态,你可以再试一下
二楞书童游客
二楞书童游客受到启发,发现“页面: 自动 梯形矫正+裁切”也不错,直接可以把版心切出来,然后再加上边栏和四边留白。
因为四边留白是自己加的,通过 ImageMagick 应该可以在留白的时候,加上页码、书名之类的。1、切版心
2、通过“切边”,把边栏(板框)加回去(填白颜色选黑色);
3、再通过“切边”,加页边空白
song游客我写过软件,可以检测页面四角,然后根据四角坐标截取保存图像。当然软件吗,自己写的可以连续处理n幅图像了
song游客这是边角样本,1481668549@qq.com
xiaopengyou游客有些好奇,不懂就問,請教:
像如果原圖片就是不規整的,比如hathitrust上的資源,這也有辦法批量切邊成LZ圖二這種嗎?
未曾管理员
又又日月游客苹果手机自建快捷指令 ,很方便的,可以从中间、上下、左右切。
xiaopengyou游客
二楞书童游客@song #140477
这个方法很好!不知道能不能公开详细的设计思路或者程序。我最近也在试着用 ImageMagick 的 -subimage-search 判断边栏的位置,然后切边。就是很慢。等脚本写好再发出来抛砖引玉——不过正如管理员所说,具体的处理方法只适用于特定的图片——主要是提供一点思路做参考。刚去老马博客看了看,老马刚做完大手术(幸好没事,希望早日康复)。等他康复了,看看有没有机缘咨询一下。
song游客对于一系列图片来说,如果他们的四边具有近似的形状,就可以用图像识别的方法识别出图片有效画面的顶、底、左、右的坐标,接下来就是图像剪切和批量处理的问题了。
song游客如果是大量尺寸边框基本固定的图片,可用Photoshop的自动批处理功能剪切保存就成,不必编程
二楞书童游客测试脚本如下,只测试过 “心赋注·嘉兴藏·日本东京大学”的图片。而且需要预处理。预处理和脚本运行效果在@140494有图示。
脚本粗陋,而且速度极慢,只是上面提到的图像识别板框思路的测试,希望可以抛砖引玉。脚本不能直接运行,仅供参考;如果自行运行出现问题,本人概不负责。
@echo off
setLocal EnableExtensions EnableDelayedExpansionrem =============== 可以修改部分 开始===========
rem 左右留边宽度:left 110, right 110
set /A SAVE_X=110
set IMAGES=*.jpg
rem 输出目录
set OUT=切边
set COMPARE_FILE=20x200.png
set FILE=result.txt
rem =============== 可以修改部分 结束===========powercfg.exe /hibernate off
set /A Counter=1
echo "出错文件:!OUT!\result.txt"
echo "左右留边宽度=%SAVE_X%"
echo. > !OUT!\result.txtfor %%J in ("%IMAGES%") do (
set file=%%~J
set /A X_L=0
set /A X_R=0
echo !Counter!=!file!
rem if !Counter! LSS 1000
CALL :CutImageEdge !file!
set /A Counter+=1
)
endLocal
powercfg.exe /hibernate on
Exit /B
Pause&Exit:CutImageEdge
SET file=%~1rem ------------ 找右边坐标 ------------------取样范围:NorthEast 300x1000+100+0
rem for /F "tokens=2 delims=@" %%A in ( 'magick !file! -gravity East -crop 300x1000+100+0 +repage miff:- ^| compare -quiet -metric RMSE -subimage-search miff:- %COMPARE_FILE% null: 2^>^&1' ) do (
for /F "tokens=2 delims=@" %%A in ( 'magick !file! -gravity NorthEast -crop 300x1000+100+0 +repage miff:- ^| compare -quiet -metric RMSE -subimage-search miff:- %COMPARE_FILE% null: 2^>^&1' ) do (
echo 右版框 OFFSET=%%A & :: 如果出错,出错信息为 error/compare.c/CompareImagesCommand/1174
CALL :GET_OFFSET "%%A",X_R
)
IF %ERRORLEVEL% LSS 0 Exit /B %ERRORLEVEL%rem 计算右边坐标 @210,66 : (300+100=比较的取样图的宽度)- (@210+20=132 黑框右边界) - 留边110 = 留边切 160(不留边切 260 )
set /A X_R=(300+100)-(!X_R!+20)rem ------------ 找左边坐标 ------------------取样范围:300x1000+100+0
for /F "tokens=2 delims=@" %%A in ( 'magick compare -quiet !file![300x1000+100+0] %COMPARE_FILE% -metric RMSE -dissimilarity-threshold 1 -subimage-search NULL: 2^>^&1' ) do (
echo 左边栏 OFFSET=%%A
CALL :GET_OFFSET "%%A",X_L
)
IF %ERRORLEVEL% LSS 0 Exit /B %ERRORLEVEL%rem 减去保留边宽
set /A X_L-=!SAVE_X!
set /A X_R-=!SAVE_X!
echo L,R=!X_L!,!X_R!
set LEFT_CHOP=
set RIGHT_CHOP=if !X_L! LEQ 0 IF !X_R! LEQ 0 (
echo %file% 无需处理 >> !OUT!/result.txt
Exit /B -1
)if !X_L! GTR 0 set LEFT_CHOP=-chop !X_L!x0 +repage
if %X_R% GTR 0 set RIGHT_CHOP=-gravity East -chop !X_R!x0 +repage
echo "magick !file! !LEFT_CHOP! !RIGHT_CHOP! !OUT!\!file!"
magick !file! !LEFT_CHOP! !RIGHT_CHOP! !OUT!\!file!EXIT /B 0
:GET_OFFSET
SET MSG=%~1
if NOT "!MSG!"=="!MSG:error=!" (
echo %file% 无法处理 >> !OUT!/result.txt
Exit /B -1
)
for /F "tokens=1 delims=," %%B in ("!MSG!") do (
set OFF_X=%%B
set /A OFF_X=!OFF_X: =!
)
set /A %~2=%OFF_X%
Exit /B 0
二楞书童游客用来比较的板框样本20x200图。
- 作者帖子
正在查看 21 个帖子:1-21 (共 21 个帖子)
正在查看 21 个帖子:1-21 (共 21 个帖子)
正在查看 21 个帖子:1-21 (共 21 个帖子)