어플리케이션 노트: JPEG 압축#
operator의 기능에 대한 정보를 얻을 수 있습니다. VisualApplets 디자인을 사용하여 JPEG 압축 애플리케이션이 표시됩니다. JPEG 데이터 파일을 생성하는 SDK 프로젝트가 제시됩니다.
VisualApplets에서 JPEG 압축을 수행하려면 두 개의 operator가 필요합니다. 이는 다음과 같습니다. ImageBuffer_JPEG_Gray 그리고 다음을 설정하십시오: JPEG_Encoder_Gray. 이미지 버퍼는 프레임 grabber 메모리에 이미지 데이터를 버퍼링하는 데 사용되며, 픽셀의 특정 재정렬에 사용됩니다. JPEG 인코더는 JPEG 압축 자체를 수행합니다.
JPEG 압축에는 8x8 픽셀 블록이 사용되므로 픽셀 재정렬이 필요합니다. 다음 그림은 이러한 재정렬을 보여줍니다.
![]()
재정렬된 이미지는 다음과 같습니다. operator는 원본 이미지의 이미지 치수를 유지합니다.
![]()
재정렬 후 operator를 사용하여 JPEG 압축을 수행할 수 있습니다. JPEG_Encoder_Gray. operator의 출력은 JPEG 헤더가 없는 허프만 스트림입니다. 압축률은 런타임 중에 변경할 수 있는 선택된 양자화 테이블에 따라 다릅니다. 허프만 코딩에는 표준 휘도 테이블이 사용됩니다.
Operator 설명서
매개변수, 입력 링크, 오퍼레이터 기능에 대한 자세한 내용은 Operator Reference를 참조하십시오.
JPEG 압축 디자인 예제#
다음 디자인 예제는 JPEG 압축을 수행하는 VisualApplets 디자인을 보여줍니다. 이 디자인은 다음과 같은 사양을 충족해야 합니다.
- Camera Link Base 영역 카메라에서 이미지를 획득합니다.
- 이미지 데이터를 버퍼링하고 JPEG 압축을 수행합니다.
- 소프트웨어에서 이미지에 JPEG 헤더를 추가하고 선택한 이미지를 파일로 작성합니다.
- 카메라의 이미지 높이가 일정하지 않습니다. 가변적인 이미지 높이를 JPEG 헤더에 추가해야 합니다.
VisualApplets 디자인#
사양을 충족하기 위해 다음과 같은 디자인이 사용됩니다.

이 간단한 디자인만으로도 모든 사양을 충족하기에 충분합니다. 이미지는 base 영역 카메라 오퍼레이터를 사용하여 획득됩니다. 다음으로, 이미지는 두 개의 경로로 분할됩니다. 첫 번째 경로는 이미지를 버퍼링하고 ImageBuffer_JPEG_Gray 오퍼레이터를 사용하여 픽셀 재정렬을 수행합니다. 그 후 JPEG 압축을 위해 JPEG_Encoder_Gray가 사용됩니다. JPEG 데이터 스트림은 DMA 채널을 통해 호스트 PC Memory로 전송됩니다. 두 번째 경로에서는 원본 이미지 데이터가 버퍼링되어 두 번째 DMA 채널을 사용하여 호스트 PC로 전송됩니다.
VisualApplets 디자인 시뮬레이션#
이 디자인은 완전한 시뮬레이션이 가능합니다. 데이터 링크에 시뮬레이션 소스와 프로브를 배치하면 JPEG 압축의 각 단계를 모니터링할 수 있습니다. 아래 그림은 시뮬레이션 모듈이 포함된 디자인을 보여줍니다. 볼 수 있듯이, 원본 이미지(simModule0)의 픽셀이 재정렬되고(simModule1), JPEG 데이터 스트림이 생성됩니다(simModule2).

JPEG 데이터를 살펴보면 스트림의 길이를 확인할 수 있습니다(아래 그림 참조). JPEG 엔코더의 Quality가 변경되면 데이터 길이에 따라 각각 달라집니다.

microDisplay에서의 런타임 테스트#
JPEG Encoder를 포함하는 모든 앱릿은 microDisplay에서 직접 사용할 수 있습니다. 주어진 예제의 경우, 이 앱릿은 각 DMA 채널마다 하나의 이미지 창을 결과로 생성합니다. 첫 번째 DMA 번호는 획득한 원본 이미지를 보여주며, 첫 번째 DMA 채널은 DMA 길이와 함께 인코딩된 이미지 데이터를 보여줍니다.

JPEG 파일 생성을 위한 SDK 프로젝트#
예제의 디자인 파일과 SDK 예제 프로젝트는 다음 폴더에서 확인할 수 있습니다. examples\processing\advanced\JPEG\JPEG_gray VisualApplets 설치 경로 내에 있습니다.
SDK 프로젝트는 기본적으로 원본 이미지와 JPEG 데이터를 획득합니다. 원본 이미지는 디스플레이로 직접 출력됩니다. JPEG 헤더가 생성되어 JPEG 데이터에 추가됩니다. 이것으로 JPEG 파일이 완성됩니다. 사용자는 JPEG 스냅샷을 파일로 작성할 수 있습니다. 또한, 인코딩된 JPEG 데이터는 간단한 C 코드 디코더를 사용하여 디코딩됩니다. nanojpeg. 디코딩된 이미지가 표시됩니다.
사용자는 이미지 크기 조절, JPEG Quality 변경, JPEG 스냅샷 파일 작성 또는 JPEG 데이터 헥사 파일 덤프 작성을 수행할 수 있습니다.
헤더 생성은 하나의 예시일 뿐이므로 참고하시기 바랍니다. VisualApplets JPEG 오퍼레이터 사용자는 자신의 애플리케이션에 맞게 조정된 자체 헤더 생성기를 작성해야 합니다.
JPEG 디코더 정보:
NanoJPEG -- KeyJ's Tiny Baseline JPEG Decoder
Version 1.0 (2009-04-29)
by Martin J. Fiedler <martin.fiedler@gmx.net>