project:detectsponsor
차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판이전 판다음 판 | 이전 판 | ||
project:detectsponsor [2013/07/08 09:29] – ::1 | project:detectsponsor [2014/10/09 21:24] (현재) – 바깥 편집 127.0.0.1 | ||
---|---|---|---|
줄 74: | 줄 74: | ||
$ convert -threshold 50% input.png | $ convert -threshold 50% input.png | ||
+ | |||
' | ' | ||
{{ http:// | {{ http:// | ||
줄 84: | 줄 84: | ||
convert는 입력된 그림파일의 픽셀을 일일이 검사합니다. 보통 픽셀은 보통 0~255의 단계값을 가집니다. 0이면 완전히 검은색, 255면 완전히 밝은 흰색입니다. 위 convert 명령의 예제는 그림의 펙셀에서 밝기 값이 50% 이상인 값은 100% 값을 가지고, 그렇지 못하면 0으로 만들라는 뜻입니다. 보다 알기 쉽게 예를 들어 보도록 하지요 5개의 픽셀이 있습니다. 각 픽셀은 다음과 같은 밝기를 가집니다. | convert는 입력된 그림파일의 픽셀을 일일이 검사합니다. 보통 픽셀은 보통 0~255의 단계값을 가집니다. 0이면 완전히 검은색, 255면 완전히 밝은 흰색입니다. 위 convert 명령의 예제는 그림의 펙셀에서 밝기 값이 50% 이상인 값은 100% 값을 가지고, 그렇지 못하면 0으로 만들라는 뜻입니다. 보다 알기 쉽게 예를 들어 보도록 하지요 5개의 픽셀이 있습니다. 각 픽셀은 다음과 같은 밝기를 가집니다. | ||
- | | + | |
- | 다섯 | + | 가장 높은 값인 255의 50%는 |
- | * 60 > 45 --> | + | * 160 > |
- | * 30 < 45 --> 0 | + | * 120 < |
- | * 48 > 45 --> | + | * 48 < 127.5 --> |
- | * 40 < 45 --> | + | * 140 > 127.5 --> |
- | * 90 > 45 --> | + | * 230 > |
그러므로 결과는 | 그러므로 결과는 | ||
- | | + | |
- | 모든 픽셀 값이 | + | 모든 픽셀 값이 |
{{ : | {{ : | ||
줄 113: | 줄 113: | ||
=== 첫번째 시도 방법 === | === 첫번째 시도 방법 === | ||
=== 구현 과정 === | === 구현 과정 === | ||
- | 위 재료를 잘 버무리면 뭐 그런대로 괜찮은 결과가 나오리라 생각했습니다. 첫번째는 거의 쉘 스크립트에 가깝습니다만, | + | 위 재료를 잘 버무리면 뭐 그런대로 괜찮은 결과가 나오리라 생각했습니다. 첫번째는 거의 쉘 스크립트에 가깝습니다만, |
- | 딱히 | + | |
파이썬에서 외부 명령을 실행하는 가장 간단한 방법 중 하나는 os.system()을 이용하는 것입니다. 이것을 이용해 원본 동영상에서 일정 간격으로 한 프레임을 얻어내고, | 파이썬에서 외부 명령을 실행하는 가장 간단한 방법 중 하나는 os.system()을 이용하는 것입니다. 이것을 이용해 원본 동영상에서 일정 간격으로 한 프레임을 얻어내고, | ||
줄 273: | 줄 272: | ||
=== 결과 분석 === | === 결과 분석 === | ||
- | tesseract라는 ' | + | tesseract라는 ' |
- | 일례로 아래와 같은 | + | 일례로 아래와 같은 |
{{ : | {{ : | ||
{{ : | {{ : | ||
- | 일례로 다음과 | + | 반면 아래와 |
{{ : | {{ : | ||
{{ : | {{ : | ||
- | 두 장의 | + | 왜 이럴까요? 혹시 |
{{ : | {{ : | ||
- | 아닙니다. 인식이 | + | 의외로 |
- | 아래는 92% threshold와 crop의 결과입니다. | + | 아래는 |
{{ : | {{ : | ||
{{ : | {{ : | ||
- | 저는 | + | 이렇게 결과를 분석했습니다. 인식이 잘 되는 이미지는 배경 이미지가 대부분 threshold를 넘지 않습니다. 이렇게 되면 배경 이미지는 모두 검게 나오고 자막에 쓰인 흰색만 이미지로 나옵니다. tesseract는 이러한 이미지를 잘 인식해 글자로 만듭니다. |
그러나 배경 이미지가 비교적 밝은 이미지라면 threshold값을 넘는 픽셀이 많이 발생합니다. 이렇게 threshold가 넘는 값이 많아지면 tesseract의 문자 인식에 상당한 영향을 끼칩니다. | 그러나 배경 이미지가 비교적 밝은 이미지라면 threshold값을 넘는 픽셀이 많이 발생합니다. 이렇게 threshold가 넘는 값이 많아지면 tesseract의 문자 인식에 상당한 영향을 끼칩니다. | ||
- | |||
- | 한편 threshold 값 또한 한자의 인식 결과에 큰 영향을 주는 요소로 작용하는 것으로 보입니다. 일반적으로 한자는 영어에 비해 그 인식률이 낮은 것으로 알려져 있습니다. 글자 수도 워낙 많은 데다 모양이 복잡하기 때문이지요. 제공이라는 글자를 따로 떼어내어 주변에 노이즈가 될 만한 상황을 제거했음에도 불구하고 95% threshold 값은 인식하지 못한 반면, 단 3%밖에 차이가 나지 않은 92% thrshold에서는 글자가 인식됩니다. 둘의 차이는 육안으로는 그렇게 도드라지게 보이지 않을 수 있습니다. 자세히 보면 95%쪽의 글자 내부에는 듬성듬성 구멍이 많이 뚫려 있지요. | ||
- | |||
{{ : | {{ : | ||
+ | 한편 threshold 값 또한 한자의 인식 결과에 큰 영향을 주는 요소로 작용하는 것으로 보입니다. 일반적으로 한자는 영어에 비해 그 인식률이 낮은 것으로 알려져 있습니다. 글자 수도 워낙 많은 데다 모양이 복잡하기 때문이지요. ' | ||
=== 다음을 위한 대책 === | === 다음을 위한 대책 === | ||
ffmpeg, convert, tasseract, 이렇게 세 가지 커맨드라인 툳을 이용하다보니 각 단계에서 파일 입출력이 발생합니다. 그러다보니 프로그램의 실행속도가 많이 느려질 수 밖에 없겠지요. 이 부분만 해결해도 상당히 속도를 해결할 수 있으리라 생각합니다. | ffmpeg, convert, tasseract, 이렇게 세 가지 커맨드라인 툳을 이용하다보니 각 단계에서 파일 입출력이 발생합니다. 그러다보니 프로그램의 실행속도가 많이 느려질 수 밖에 없겠지요. 이 부분만 해결해도 상당히 속도를 해결할 수 있으리라 생각합니다. |
project/detectsponsor.1373275745.txt.gz · 마지막으로 수정됨: 2014/10/09 21:23 (바깥 편집)