자주 묻는 질문#

CMUcam1과 CMUcam2의 차이점은 무엇입니까?#

소개#

CMUcam2는 CMUcam1의 모든 기능을 향상된 형태로 포함하며 그 이상을 제공합니다. 아래에서 새로운 기능과 차이점을 간략히 설명합니다. CMUcam1과 CMUcam2 중 무엇을 구입할지 결정하는 방법에 대한 질문의 답변도 살펴보고 싶을 수 있습니다.

하드웨어 개요#

중요한 두 가지 주요 하드웨어 차이점이 있습니다. CMUcam2는 CMUcam1과 다른 프로세서를 사용하며 CMUcam2는 프레임 버퍼 칩을 포함하는 반면 CMUcam1은 그렇지 않습니다.

CMUcam2는 SX52 프로세서를 사용하고 CMUcam1은 SX28 프로세서를 사용하며, 둘 다 Ubicom의 SX 프로세서 시리즈입니다. 두 경우 모두 프로세서는 75 MHz로 동작하므로 프로세서 속도나 계산 능력에는 차이가 없습니다. SX52 프로세서의 장점은 더 많은 RAM(262 대 136바이트), 더 많은 ROM(4096 대 2048 워드), 그리고 더 많은 I/O 핀을 가지고 있다는 것입니다. 더 많은 RAM과 ROM은 더 복잡한 코드를 작성할 수 있음을 의미했고, 이를 통해 CMUcam2에 더 많은 기능을 통합할 수 있었습니다. 더 많은 수의 I/O 핀은 더 많은 서보, 더 많은 구성 점퍼 등과 같은 다른 기능을 위해 남는 핀이 더 많다는 것을 의미했습니다.

두 시스템의 큰 차이점은 CMUcam2에는 AverLogic의 AL422B 프레임 버퍼 칩이 포함되어 있는 반면 CMUcam1에는 없다는 것입니다. 이를 통해 CMUcam2 하드웨어는 단일 완전한 프레임을 빠르게 캡처하여 프레임 버퍼 메모리에 저장할 수 있습니다. 이것은 여러 가지 장점이 있습니다:

  • 더 복잡한 처리. CMUcam1에서는 프로세서가 카메라 모듈에서 출력되는 픽셀 데이터 스트림을 실시간으로 처리해야 했습니다. 이 설계는 시스템 하드웨어의 복잡성과 비용을 줄이는 데 도움이 되었습니다. 그러나 처리는 픽셀 사이 또는 이미지 행 사이에 실시간으로 수행되어야 했기 때문에 처리의 복잡성이 제한되었습니다. CMUcam2의 프로세서는 프레임 버퍼에서 자체 속도로 픽셀 데이터에 접근하기 때문에 픽셀당 더 복잡한 처리를 수행할 수 있습니다.

  • 더 빠른 처리. 카메라 모듈 픽셀 스트림과 동기화를 유지할 필요가 없다는 것의 이면은, 프로세서가 픽셀 데이터를 필요로 할 때 카메라 모듈을 기다릴 필요가 없다는 것입니다. 이 대기 시간을 없애면 CMUcam2 프로세서가 CMUcam1보다 더 강력하지 않더라도 실제로 프레임을 더 빠르게 처리할 수 있습니다.

  • 프레임당 다중 연산. 프레임 버퍼에 저장된 이미지는 변하지 않으므로 CMUcam2는 단일 프레임에 대해 여러 연산을 수행할 수 있습니다. 예를 들어 단일 프레임에서 움직임을 검출하고, 영역 통계를 계산하고, 여러 색상을 트래킹하는 것을 모두 수행할 수 있습니다.

  • 향상된 프레임 덤프. CMUcam1은 전송되는 프레임 덤프 데이터를 카메라 모듈 데이터 스트림과 동기화해야 했기 때문에, 카메라 프레임당 한 열의 데이터만 보낼 수 있었습니다. 이는 이미지의 서로 다른 부분이 서로 다른 시점에 캡처됨을 의미했고, 따라서 빠르게 움직이는 물체는 CMUcam1 프레임 덤프에서 번져 보였습니다. CMUcam2는 프레임 버퍼의 고정된 데이터로부터 이미지를 전송하므로 이것은 더 이상 문제가 되지 않습니다.

  • 낮은 보드 레이트의 개선된 처리. 프레임 버퍼를 갖는다는 것은 또한 CMUcam2가 전송하는 데이터의 타이밍을 카메라 모듈에서 읽은 데이터의 타이밍과 완전히 분리할 수 있음을 의미합니다. 이는 프레임 덤프 및 비트맵 라인 모드의 CMUcam2 데이터가 통신 보드 레이트가 바뀌어도 변하지 않으며, 보드 레이트에 관계없이 CMUcam2가 동일한 프레임 또는 비트맵 데이터를 호스트 프로세서에 전달함을 의미합니다. 다만 초당 처리되는 프레임 수는 느린 보드 레이트에서 여전히 달라질 수 있는데, 다음 프레임을 처리하기 전에 한 프레임의 모든 데이터 전송을 결국 완료해야 하기 때문입니다.

  • 향상된 카메라 모듈 동작. CMUcam1의 프로세서가 카메라 모듈의 데이터 스트림과 동기화를 유지할 수 있도록, 카메라 모듈의 프레임 속도를 17fps로 낮춰야 했습니다. CMUcam2가 사용하는 프레임 버퍼 덕분에 카메라 모듈을 전체 프레임 속도로 동작시킬 수 있습니다. 이것의 한 가지 장점은 카메라의 자동 노출 및 화이트 밸런스 조정이 더 빠르게 동작할 수 있다는 점입니다. 프레임당 한 번만 조정할 수 있는데 이제 초당 프레임 수가 더 많기 때문입니다. 두 번째 장점은 (모듈이 전체 프레임 속도로 동작할 때만 작동하는) 흑백 아날로그 비디오 출력을 CMUcam2가 이미지 데이터를 처리하는 동안 사용할 수 있다는 점입니다. 이는 CMUcam1에서는 불가능했습니다.

기능 개요#

CMUcam2는 CMUcam1의 모든 기능을 구현하고 많은 새로운 기능도 추가합니다. 다음은 요약입니다.

  • 컬러 트래킹. CMUcam2는 CMUcam1과 마찬가지로 컬러 트래킹을 구현합니다. CMUcam1에서처럼, 트래킹된 픽셀의 비트맵을 전송하는 선택적 비트맵 라인 모드가 구현되어 있습니다. 몇 가지 개선 사항도 있습니다. 트래킹된 픽셀의 평균, 최소, 최대 위치를 포함하여 각 행에 대한 트래킹된 픽셀의 통계를 제공하는 새로운 선택적 라인 모드가 있습니다. 이는 라인 추종에 매우 유용합니다. 트래킹 경계의 해석을 반전시킬 수 있는 새로운 선택적 모드도 있습니다. 이 모드에서는 트래킹 경계 밖의 픽셀이 “양호한” 것으로 간주됩니다. 이는 균일한 배경에 대해 물체를 트래킹하는 데 유용합니다 – 블루 스크린 특수 효과를 생각하면 됩니다. 픽셀 차분(아래에서 설명)이 활성화된 경우 에지를 검출하는 데에도 유용합니다. 노이즈 필터링 옵션도 노이즈가 많은 상황에서 필터링 양을 조정할 수 있도록 개선되었습니다.

  • 이미지 통계. CMUcam2는 CMUcam1과 마찬가지로 이미지 영역의 평균 및 변동 통계 계산을 구현합니다. CMUcam1에서처럼, 이미지의 각 라인의 평균을 전송하는 선택적 라인 모드가 구현되어 있습니다. 라인 단위로 변동 정보를 선택적으로 포함하는 새로운 향상된 라인 모드도 있습니다.

  • 움직임 검출. CMUcam2에서 완전히 새로운 것은 움직임 검출(프레임 차분) 명령입니다. 이 명령들은 CMUcam2가 현재 이미지의 저해상도 버전을 캡처하고 이를 새로 들어오는 이미지와 지속적으로 비교하도록 지시하는 데 사용할 수 있습니다. CMUcam2의 패킷은 이미지의 어느 부분이든 지정된 양보다 더 많이 변하면 이를 보고하는데, 이는 잠재적으로 움직임을 나타낼 수 있습니다. 이 패킷들은 변화된 이미지 블록의 중심(centroid)과 범위를 설명하거나 어떤 이미지 블록이 변화했는지에 대한 비트맵을 제공할 수 있습니다. 이 모드는 픽셀 차분(아래에서 설명)과 결합하여 조명 변화에 대해 움직임 검출을 더 견고하게 만들 수도 있습니다.

  • 히스토그램. CMUcam2에서 완전히 새로운 것은 히스토그램 계산 명령입니다. 이 명령들은 최대 28개의 구간(bin) 해상도로 단일 색상 채널의 1차원 히스토그램을 캡처하는 데 사용할 수 있습니다. 히스토그램은 이미지의 외관을 요약하는 유용한 정보를 제공합니다. 호스트 프로세서에서 추가 프로그래밍을 하면 이 정보를 사용하여 장애물, 특정 물체 또는 위치를 검출하는 데 도움을 받을 수 있습니다.

  • 이미지 윈도잉. CMUcam2는 CMUcam1과 마찬가지로 처리를 전체 이미지의 작은 영역(하위 윈도우)으로 제한하는 기능을 구현합니다. CMUcam2에서는 이 기능이 프레임 버퍼에 저장된 단일 이미지의 하위 윈도우를 자세히 검사하는 데 사용될 수 있어 더욱 유용합니다. 또한 세로 윈도우 크기를 줄이면 CMUcam2가 처리해야 하는 픽셀 수를 크게 줄여 초당 처리되는 프레임 수를 크게 늘릴 수 있습니다.

  • 출력 패킷 커스터마이징. CMUcam2는 CMUcam1보다 훨씬 유연한 패킷 커스터마이징을 구현합니다. 각 명령이 생성하는 각 패킷을 커스터마이징하여 특정 애플리케이션에 필요한 값만 반환하도록 하는 명령들이 있습니다. 이는 많은 상황에서 호스트 프로세서로 전송되고 처리되는 데이터 양을 크게 줄일 수 있습니다.

  • 픽셀 차분. CMUcam2에서 완전히 새로운 것은 선택적 픽셀 차분 모드입니다. 픽셀 차분 모드에서는 픽셀이 나머지 CMUcam2 코드로 전달되기 전에 전처리됩니다. 이 전처리 단계는 현재 픽셀 값과 이전 픽셀 값의 차이인 새로운 픽셀 값을 나머지 코드로 보냅니다. 기본적으로 이것이 하는 일은 이미지에서 수직 에지를 제외한 모든 것을 걸러내는 것입니다. 이것은 매우 강력한 연산이며, 호스트 프로세서에서 추가 프로그래밍을 하면 장애물 검출과 라인 추종을 돕는 데 사용할 수 있습니다.

  • 다운 샘플링. CMUcam2에서 완전히 새로운 것은 선택적 다운 샘플링 모드입니다. 다운 샘플링 모드에서 CMUcam2 소프트웨어는 처리하기 전에 카메라 이미지의 해상도를 줄입니다. 이것의 장점은 처리하고 전송할 픽셀이 훨씬 적다는 것입니다. 소프트웨어로 수행되기 때문에 다운 샘플링은 처리 속도를 아주 조금만 증가시킵니다. 큰 이점은 전송되는 데이터 양을 줄이는 데 있습니다. 덤프된 이미지 프레임의 경우 다운 샘플링은 데이터 크기를 쉽게 줄여 전송 시간을 2배 또는 4배 이상 줄일 수 있습니다. 마찬가지로 비트맵 라인 모드를 사용할 때 비트맵 이미지의 크기를 크게 줄일 수 있어 호스트 프로세서가 수신하고 처리해야 하는 데이터 양이 감소합니다.

  • 서보 제어. 원래 CMUcam1은 단일 서보만 지원했으며 그 서보는 특정 보드 레이트에서 그리고 CMUcam1이 스트리밍 모드일 때만 제대로 동작했습니다. CMUcam2는 최대 5개의 서보를 지원합니다. CMUcam2의 서보 컨트롤러 코드는 백그라운드 프로세스로 구현되어 서보 출력이 항상 안정적으로 유지되며 다른 서보 컨트롤러처럼 사용할 수 있습니다. 또한 CMUcam2는 팬 및 틸트 서보를 자동으로 제어하도록 구성할 수 있습니다. 이 모드에서 CMUcam2는 컬러 트래킹 데이터를 계산하라는 명령을 받을 때마다 서보 위치를 갱신합니다.

  • 전력 절약. CMUcam2에서 완전히 새로운 것은 전력 절약 모드입니다. 일부 애플리케이션에서는 CMUcam2가 이미지 데이터를 지속적으로 처리할 필요가 없습니다. 이러한 경우 CMUcam2에 다양한 전원 차단(또는 절전) 모드로 진입하도록 명령할 수 있습니다. CMUcam2가 이러한 모드 중 하나에 있을 때는 트래킹 명령이나 서보 제어가 일어나지 않습니다. 간단한 시리얼 명령을 보내면 몇 밀리초 안에 카메라가 다시 깨어납니다.

CMUcam2에서 OV6620과 OV7620 모듈을 사용하는 것의 차이점은 무엇입니까?#

소개#

성능 면에서, OV7620 센서는 OV6620 센서(356x292 원시 센서 위치)보다 더 높은 해상도의 센서(664x492 원시 센서 위치)입니다. 하지만 이 사실은 이 센서 중 어느 것이 CMUcam2 애플리케이션에 가장 잘 맞는지 고려할 때 발생하는 문제와는 거의 관련이 없습니다. 다음은 고려 사항 목록입니다.

해상도#

OV7620 센서가 OV6620보다 더 높은 해상도의 센서인 것은 사실이지만, CMUcam2 프레임 버퍼의 고정된 메모리 크기 때문에, CMUcam2는 OV7620 센서에 대해 160x239의 단일 해상도만 지원합니다. CMUcam2는 OV6620 센서에 대해 88x143의 저해상도 모드와 176x255의 고해상도 모드를 지원합니다. 따라서 OV6620을 고해상도 모드로 사용하면 OV7620 센서에 사용 가능한 단일 해상도 모드보다 실제로 더 높은 해상도 작동을 달성할 수 있습니다.

프레임 속도#

해상도와 관련된 또 다른 문제는 이미지 스트림을 지속적으로 처리할 때의 최대 프레임 속도입니다. 해상도가 낮을수록 처리해야 하는 픽셀이 적어지고 달성 가능한 프레임 속도가 높아집니다. 다운 샘플링 비율과 가상 윈도우 크기를 변경하여 프레임 속도를 높일 수 있지만, 센서가 출력하는 실제 픽셀 수가 훨씬 더 큰 영향을 미칩니다. 이 때문에 CMUcam2는 OV6620을 저해상도 모드로 동작시킬 때, OV7620에 사용 가능한 단일 해상도 모드보다 훨씬 높은 프레임 속도를 달성할 수 있습니다.

아날로그 비디오 출력#

두 센서 간의 또 다른 차이점은 두 센서의 아날로그 비디오 출력 형식입니다. OV6620 센서는 아날로그 PAL 형식으로 출력하고 OV7620 센서는 아날로그 NTSC 형식으로 출력합니다. 두 경우 모두 출력은 흑백입니다.

대부분의 CMUcam2 사용에서 아날로그 출력은 사용되지 않는다는 점에 유의하는 것이 중요합니다. 일반적인 애플리케이션에서는 이미지 처리 결과나 원시 픽셀이 시리얼 포트를 통해 호스트 컴퓨터나 마이크로컨트롤러로 디지털 방식으로 전송되므로 이것은 문제가 되지 않습니다. 하지만 실시간 흑백 비디오가 중요하다면, 아날로그 비디오 출력의 형식을 고려하고 싶을 수 있습니다.

요약#

저희의 권장 사항은 OV6620 모듈이 거의 모든 애플리케이션에 최선의 선택이라는 것입니다. 특히 이 모듈로 달성할 수 있는 더 낮은 비용과 더 빠른 처리 시간을 고려하면 그렇습니다. NTSC 단색 아날로그 비디오 출력이 필요한 드문 애플리케이션에서는 OV7620을 고려하고 싶을 수 있습니다.

현재 CMUcam2 펌웨어 릴리스에 알려진 문제가 있습니까?#

네. 1.00 릴리스에서 “RM”(Raw Mode) 명령이 올바르게 작동하지 않았습니다. 1.01 릴리스에서 그 문제를 수정합니다.

CMUcam2의 펌웨어는 업그레이드 가능하지만, 그렇게 하려면 SX-Key(또는 호환) 프로그래머가 필요합니다. ROM 이미지의 “hex” 파일은 다운로드 페이지에서 사용할 수 있습니다.