스캔 한 오래된 문서가 있는데이를 흑백으로 변환하고 싶습니다. 내용은 항상 검은 색이고 배경은 흰색이어야합니다.
저는 Photoshop을 사용합니다.
스캔 한 오래된 문서가 있는데이를 흑백으로 변환하고 싶습니다. 내용은 항상 검은 색이고 배경은 흰색이어야합니다.
저는 Photoshop을 사용합니다.
답변:
스캔을 제어하거나 다시 스캔 할 수있는 경우 스캔에서 대비 설정을 높이고 찾을 수있는 가장 어두운 텍스트에서 검은 점을 설정하십시오. 그러면 아래 단계가 더 쉬워집니다. 그렇지 않다면 계속 읽으십시오 ...
상당히 일반적인 오래된 문서 스캔의 일부는 다음과 같습니다.
세부 사항은 문서에 따라 달라 지지만 (예를 들어 샘플보다 약간 높은 대비를 가짐) 넓은 윤곽선은 동일합니다.
노란색 슬라이더가 오른쪽으로 멀리 떨어져 노란색 배경을 밝게합니다. 나는 텍스트를 조금만 어둡게 할 수있었습니다.
이것은 당신에게 방법의 95 %를 가져옵니다. 스캔 한 문서에는 일반적으로 오른쪽 (종이)쪽으로 큰 덩어리가 있고 왼쪽 (텍스트)쪽으로 작은 덩어리가있는 히스토그램이 있습니다. 올바른 설정을 찾으려면 문서를 실험해야합니다.
이 시점에서 이미지를 복제하고 복제물을 평평하게하고 일반 Photoshop 수정 도구를 사용하여 나머지를 정리할 수 있습니다.
Photoshop을 언급했지만 관심이있는 경우 고급 그레이 스케일 청소 및 처리를 수행 하는 김프 플러그인 도 있습니다 .
그것은 Nuvola Tools 라고 불리며 주로 스캔 된 아트에 초점을 맞추고 있지만 시도해 볼 수도 있습니다.
전에:
후:
출처 : 김프 플러그인 레지스트리
김프와 함께 :
나는 언급 된 다양한 방법을 시도했다. 무료 FineThreshold http://www.mehdiplugins.com/english/finethreshold.htm 플러그인. 이 플러그인은 문서가 균질하게 밝아지고 용지 자체가 균질 한 품질을 제공하는 경우 신속하게 좋은 결과를냅니다. 그러나 이것은 내 경우가 아닙니다. 모든 문서의 상단이 하단보다 밝습니다. 결과적으로 모든 방법과 부분 설정은 모든 페이지의 일부에 대해서만 잘 작동하고 나머지는 그렇지 않습니다.
결국 Zoner Photo Studio v15의 일부인 "Dynamic Thresholding" 효과를 발견했습니다 . eval 버전은 일정 기간 무료입니다. 주변 밝기에 따라 흑백 임계 값을 오프셋하는 것 같습니다. 응용 프로그램은 한 단계 프로세스입니다. 나를 위해 매개 변수 "Large, value +14"는 매우 잘 작동했습니다. "Editor"옆에 Zoner에는 선택된 모든 이미지를 일괄 처리 할 수있는 "Manager"인터페이스도 있습니다. 결국 저는 아주 오래된 300dpi 레이저 프린터에서 결과를 뛰어난 대비로 인쇄 할 수있었습니다.
이제, 내가 찾고있는 유일한 나머지 작업은 자동으로 CROP 컷 아웃 불필요한 여백에 지적인 방식으로 모든 이미지는. 수동 자르기가 지루하고 시간이 많이 걸리기 때문에 어떤 힌트라도 환영합니다.
김프 플러그인 레지스트리에 플러그인이있었습니다. 여기에 보관되어 있습니다 .
얼마 전에 나는 이것을 파이썬으로 번역했고 훨씬 빨리 달렸다.
다음은 원래 질문의 이미지에 적용한 결과입니다.
Alan의 답변에 이미지를 적용한 결과는 다음과 같습니다.
어쨌든 여기 플러그인 코드가 있습니다 :
from __future__ import division
import random
import gimp, gimpfu
pdb = gimp.pdb
sample_count = 100
def set_image_background_to_white(image, drawable):
pdb.gimp_context_push()
pdb.gimp_image_undo_group_start(image)
pdb.gimp_progress_set_text('Correcting background')
if drawable.is_gray:
channel_count = 1
elif drawable.is_rgb:
channel_count = 3
assert not drawable.is_indexed
# get some random points in the image
sum_by_channel = [0]*channel_count
for sample_index in range(sample_count):
px = pdb.gimp_drawable_get_pixel(drawable,
random.randint(0, pdb.gimp_drawable_width (drawable)-1),
random.randint(0, pdb.gimp_drawable_height(drawable)-1))[1]
for i in range(channel_count):
sum_by_channel[i] += px[i]
pdb.gimp_progress_update(sample_index/sample_count)
if drawable.is_gray:
pdb.gimp_levels(drawable, gimpfu.HISTOGRAM_VALUE,
0, sum_by_channel[0]/sample_count,
1.,
0, 255)
elif drawable.is_rgb:
for i in range(channel_count):
pdb.gimp_levels(drawable, 1+i,
0, sum_by_channel[i]/sample_count,
1.,
0, 255)
pdb.gimp_levels(drawable, gimpfu.HISTOGRAM_VALUE,
0, 255,
0.6,
0, 255)
pdb.gimp_image_undo_group_end(image)
pdb.gimp_displays_flush()
pdb.gimp_progress_update(1.)
pdb.gimp_context_pop()
gimpfu.register('set_image_background_to_white', # name
'Set image background to white', # blurb
'No help info yet', # help
'Robert Fleming', # author
'Robert Fleming', # copyright
'2015', # date
'<Image>/Filters/Set Background to White', # menupath
'RGB*, GRAY*', # imagetypes
[], # params
[], # results
set_image_background_to_white, # function
)
gimpfu.main()