사진 속 얼굴을 자동으로 감지합니다.

사진 속 얼굴을 자동으로 감지합니다.

제가 일하는 곳에서는 여권용 사진을 함께 스캔한 후 개별 사진으로 잘라서 고유한 파일 번호로 저장합니다. 현재 우리는 Paint.net을 사용하여 사진을 수동으로 선택하고 자르고 저장합니다.

Sony의 Cybershot 카메라에 얼굴 인식 기능이 있는 것을 보았습니다. Google은 또한 얼굴 감지를 검색할 때 iphoto에 대한 정보를 제공합니다. Picasa에는 얼굴 감지 기능도 있습니다. 문서에서 얼굴을 자동으로 감지하여 개별 이미지를 자르는 데 필요한 시간을 줄여 직장의 생산성을 향상시킬 수 있는 방법이 있습니까?

샘플 스캔 문서(실제 문서에는 각각 4개의 이미지 = 20개의 사진으로 구성된 5줄이 있습니다): (출처:http://www.memorykeeperphoto.com/images/passport_photo.jpg, 페어즈)

샘플 이미지

예를 들어. Picasa 3.8에서는 보기> 사람을 클릭하면 모든 얼굴이 표시되고 이름을 지정하라는 메시지가 표시됩니다. 이러한 개별 사진을 이름과 함께 자동으로 다른 사진으로 저장할 수 있습니까?

답변1

여권 사진을 자동으로 자르는 것은 확실히 가능해 보입니다. 고정된 조명 조건, 항상 앞을 향함, 일관된 이미지 형식... 얼굴 감지에 이보다 더 유리한 조건은 없을 것 같습니다.

사용해 보았습니다얼굴 감지샘플 이미지의 결과를 보려면 다음 단계를 따르세요.

원시 얼굴 감지 출력

여권은 형식과 크기가 다양하여 스캐너 평판에 불규칙하게 포장되지만 사진은 항상 똑바로 세워 놓을 것이라고 가정합니다. facedetect모든 면의 중심과 크기를 알려줄 것입니다. 특히 얼굴의 크기를 활용하여 얼굴 주변 영역을 비례적으로 자를 수 있습니다. 여권 사진은 사진의 고정된 영역을 덮는 경향이 있으므로 비교적 안전한 가정인 것 같습니다.

다음을 사용하면 이미지의 하위 영역을 자르는 것이 정말 쉽습니다.이미지매직. 프로세스를 자동화하기 위해 약간의 (그리고 대략적인) 쉘 스크립트를 작성했습니다.

#!/bin/sh
pc=60
files="P1Xb8.jpg"

fileno=1
for file in $files; do
  n=1
  facedetect $file | while read x y w h; do
    border=$(($w * $pc / 100))
    x=$(($x - $border))
    y=$(($y - $border))
    w=$(($w + $border * 2))
    h=$(($h + $border * 2))
    echo $x $y $w $h
    convert "$file" -gravity NorthWest -crop "${w}x${h}+$x+$y" "${fileno}_$n.jpg"
    n=$(($n + 1))
  done
  fileno=$(($fileno + 1))
done

감지된 얼굴 너비의 60%(스크립트 두 번째 줄)로 테두리 영역을 경험적으로 정의했습니다. 제가 얻은 이미지는 다음과 같습니다.

1_1 1_2 1_3 1_4

그것은 이미 꽤 좋습니다. 상단에는 항상 약간의 공백이 남아 있는데, 호출에 "-fuzz 10% -trim"을 추가하여 제거할 수 있었습니다 convert. 그 후 첫 번째 이미지의 결과는 다음과 같습니다.

1_1 잘림

빠른 스크립트를 작성하기에는 너무 초라하지 않으며 개선의 여지가 많습니다. 예를 들어 대부분의 여권은 세로 방향을 사용하므로 수직/수평 요소가 다릅니다(보통 1.3). 또한 얼굴은 약간 위쪽으로 이동하는 경향이 있습니다(아마도 1.3 정도). 이를 수정하면 상단의 공백을 완전히 잘라낼 필요가 없어 더 나은 자르기 결과를 얻을 수 있습니다.

실제 출력과 비교하여 이 스크립트를 테스트하기 위해 샘플 플랫베드 스캔을 (비공개적으로라도) 게시할 수 있다면 좋을 것입니다.

물론 이 제안에는 Linux 설치가 필요합니다. 하지만 제가 올바르게 이해했다면 이 지루한 작업을 자동화하기 위해 전용 설치나 가상 머신을 설정하는 것이 전혀 무리한 것은 아닙니다.

개인 정보 보호가 문제가 되지 않는다면(그러나 의심스럽습니다), 저는 얼굴 감지 모델을 개선하는 데 사용할 잘린 얼굴에 대한 대가로 괜찮은 솔루션을 작성하는 데 실제로 관심이 있을 것입니다.

관련 정보