Arduino Nano와 Python을 사용하여 자동 35mm 필름 스캐너를 만드는 방법
평판 스캐너가 컬러 네거티브 필름을 스캔하는 동안 기다리는 것은 전혀 즐거운 일이 아닙니다. 이 프로세스와 후속 색상 사전 수정에는 1시간에서 2시간 정도 걸릴 수 있습니다.
일반적인 디지털 카메라 스캐닝 설정에는 디지털 카메라, 삼각대(또는 복사 스탠드) 및 필름 캐리어가 포함됩니다. 3가지 중에서 가장 희소한 품목은 필름 캐리어라고 생각됩니다. 운 좋게도 Negative Supply와 같은 회사들이 꼭 필요한 필름 캐리어를 만들기 시작했습니다. 그러나 이것들은 또한 다소 비쌀 수도 있습니다. 운 좋게도 간단한 샤프트 시스템을 통해 자르지 않은 135 형식(35mm) 필름을 밀고 당길 수 있는 판지로 만든 DIY 필름 캐리어는 훌륭하게 작동합니다. 이에 대해서는 나중에 자세히 설명하겠습니다!
약간의 배경. 일단 저는 Negative Supply, Capture One 또는 Negative Lab Pro와 관련이 없다고 말씀드리고 싶습니다. 나는 우연히 그 회사의 제품을 소유하고 있고 (지금은) 그 제품을 사용하는 것을 좋아합니다. 이전에는 필름 스캔을 위해 Epson V600을 사용하고 있었습니다. 내 필름을 스캔할 수 있어서 매우 좋았지만 속도가 부족했습니다. 더욱이 나는 내가 얻은 곡물을 완전히 즐기지 못했습니다.
그러고 보니 제가 이 프로젝트를 하기로 결정한 이유는 좀 더 다면적입니다. 저는 Negative Supply, Lomography, Negative Lab Pro와 같은 영화 커뮤니티와 영화 중심 회사를 지원하는 것을 좋아합니다. 나는 또한 이 틈새 도메인을 향해 DIY 커뮤니티를 약간 자극하는 아이디어를 좋아합니다. 마지막으로, 저는 처음으로 마이크로컨트롤러를 프로그래밍하고 싶었습니다. 이 프로젝트를 맡으면서 많은 생각을 하게 되었습니다. 저는 불과 한 달 전까지만 해도 Arduino와 Raspberry Pi의 차이점을 구분할 수 없었다는 것을 인정합니다.
주로 가격 때문에 Arduino를 무작위로 선택한 후 해결할 문제를 찾아야 했습니다.
시간은 그리 오래 걸리지 않았습니다! 먼저 JOBO 전문가 탱크 3010을 사용한 결과 발생한 UniRoller 개발자 문제를 해결했습니다. 그런 다음 하이킹을 할 때 자동으로 토마토 식물에 물을 주는 데 집중했습니다. 그리고 나의 마지막이자 현재 프로젝트는 필름 스캔과 관련된 이 문제를 해결하는 것이었습니다. 이것은 또한 나에게 Python 프로그래밍을 연습할 구실을 제공했습니다.
오늘 현재로 저는 2개의 별도 필름 스캐닝 프로그램을 완료했습니다. 하나는 Python 언어로 작성되었고 다른 하나는 C++로 작성되었습니다(Arduino 스케치라고도 함). 둘 다 동일한 하드웨어를 사용하지만 작동 방식에는 큰 차이가 있습니다. 하나는 Python 컴퓨터 비전을 통해 활성화되며 완전히 자율적입니다(자동 위치 지정, 사진 촬영 및 다음 프레임으로 이동). 다른 하나는 영화 진행을 기계화할 뿐입니다. 사용자는 필름 위치에서 필요한 수정을 한 다음 컨트롤러 버튼을 사용하여 사진을 찍습니다.
이 프로젝트를 구현하려면 Python(Arduino용 C/C++)이 이상적이지만 Jupyter Notebook(Anaconda에 있음)을 실행하는 브라우저에서 실행 버튼을 클릭할 필요는 없습니다. 즉, 사용자는 Python과 4개의 라이브러리를 다운로드해야 합니다. 매우 풍부한 온라인 커뮤니티를 갖춘 원숍 솔루션인 Anaconda 번들을 적극 권장합니다.
이 설치 후에는 Python 라이브러리, Numpy, pyFirmata, SciPy 및 cv2도 필요합니다. 터미널에서 Anaconda-Navigator 또는 PIP install em을 사용하여 이러한 Python 라이브러리를 설치할 수 있습니다. 인터넷에는 이에 대한 방법 튜토리얼이 넘쳐납니다. 그럼에도 불구하고 저는 Python 코드를 만들고 실행하기 위해 Jupyter 웹 인터페이스를 사용했습니다. 이 프로그램에는 ipynb 확장자가 있습니다. 그러나 모든 것이 시작되는 곳은 Arduino IDE(Arduino 스크립트의 확장자는 .ino)이므로 Arduino IDE를 설치하여 시작하는 것이 가장 좋습니다. 이에 대한 자세한 내용은 나중에 설명하겠습니다.
자, 실제 멋진 설정으로 넘어가겠습니다.
이 설정이 실제로 작동하는 모습을 살펴보겠습니다!
모드 1: Arduino 전용 및 수동으로 위치 수정 사용:
모드 2: Python을 사용한 자동 수정:
모드 3: DIY 판지 필름 캐리어에서 Arduino와 Python이 작동하는 모습: