콘텐츠로 바로 가기

어플리케이션 노트: JPEG 압축#

이 어플리케이션 노트에서는 Basler JPEG 압축 연산자의 사용법을 설명합니다(어플리케이션 노트 SAN013).

연산자의 기능에 대한 정보를 얻을 수 있습니다. Visual Applets 디자인을 사용하여 JPEG 압축 어플리케이션을 보여줍니다. 또한 JPEG 데이터 파일을 생성하는 SDK 프로젝트가 제시됩니다.

VisualApplets에서 JPEG 압축을 수행하려면 두 개의 연산자가 필요합니다. 이 연산자는 ImageBuffer_JPEG_Gray 그리고 다음을 설정합니다. JPEG_Encoder_Gray. 이미지 버퍼는 프레임 그래버 메모리에서 이미지 데이터를 버퍼링하고 픽셀을 특정 방식으로 재정렬하는 데 사용됩니다. JPEG 인코더는 실제 JPEG 압축을 수행합니다.

JPEG 압축에는 8x8 픽셀 블록이 사용되므로 픽셀 재정렬이 필요합니다. 다음 그림은 이러한 재정렬 방식을 보여줍니다.

픽셀 재정렬 방식

재정렬된 이미지는 다음과 같은 형태가 됩니다. 연산자는 원본 이미지의 이미지 치수를 유지합니다.

픽셀 재정렬 예시

재정렬 후 연산자를 사용하여 JPEG 압축을 수행할 수 있습니다 JPEG_Encoder_Gray. 연산자의 출력은 JPEG 헤더가 없는 허프만 스트림입니다. 압축률은 런타임 중에 변경할 수 있는 선택된 양자화 테이블에 따라 달라집니다. 허프만 코딩에는 표준 휘도 테이블이 사용됩니다.

연산자 문서

매개변수, 입력 링크 및 연산자 기능에 대한 자세한 내용은 Operator Reference를 참조하세요.

JPEG 압축 디자인 예제#

다음 디자인 예제에서는 JPEG 압축을 수행하는 Visual Applets 디자인을 보여줍니다. 이 디자인은 다음 사양을 충족해야 합니다.

  • Camera Link Base 영역 카메라에서 이미지를 취득합니다.
  • 이미지 데이터를 버퍼링하고 JPEG 압축을 수행합니다.
  • 소프트웨어에서 이미지에 JPEG 헤더를 추가하고 선택한 이미지를 파일로 저장합니다.
  • 카메라의 이미지 높이가 일정하지 않습니다. 가변적인 이미지 높이를 JPEG 헤더에 추가해야 합니다.

VisualApplets Design#

사양을 충족하기 위해 다음 디자인이 사용됩니다.

JPEG 압축을 위한 VisualApplets 디자인

이 간단한 디자인은 모든 사양을 충족하기에 충분합니다. 이미지는 base area camera operator를 사용하여 획득됩니다. 다음으로, 이미지는 두 개의 경로로 나뉩니다. 첫 번째 경로는 이미지를 버퍼링하고 ImageBuffer_JPEG_Gray operator를 사용하여 픽셀 재정렬을 수행합니다. 그 후 JPEG_Encoder_Gray가 JPEG 압축에 사용됩니다. JPEG 데이터 스트림은 DMA 채널을 통해 호스트 PC 메모리로 전송됩니다. 두 번째 경로에서는 원본 이미지 데이터가 버퍼링되어 두 번째 DMA 채널을 사용하여 호스트 PC로 전송됩니다.

Visual Applets 디자인 시뮬레이션#

이 디자인은 완전히 시뮬레이션할 수 있습니다. 데이터 링크에 시뮬레이션 소스와 프로브를 배치하여 JPEG 압축의 각 단계를 모니터링할 수 있습니다. 아래 그림은 시뮬레이션 모듈이 포함된 디자인을 보여줍니다. 볼 수 있듯이, 원본 이미지(simModule0)의 픽셀이 재정렬되고(simModule1), JPEG 데이터 스트림이 생성됩니다(simModule2).

JPEG 압축 디자인 시뮬레이션

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

SimProbe의 JPEG 데이터

microDisplay에서의 런타임 테스트#

JPEG Encoder를 포함하는 모든 applet은 microDisplay에서 직접 사용할 수 있습니다. 주어진 예시의 경우, 이 applet은 각 DMA 채널마다 하나의 이미지 창을 생성합니다. DMA 번호 1은 획득한 원본 이미지를 보여주고, 첫 번째 DMA 채널은 DMA 길이와 함께 인코딩된 이미지 데이터를 보여줍니다.

microDisplay의 JPEG Applet

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 operator 사용자는 자신의 응용 프로그램에 맞게 조정된 자체 헤더 생성기를 작성해야 합니다.

JPEG 디코더 정보:

NanoJPEG -- KeyJ's Tiny Baseline JPEG Decoder

Version 1.0 (2009-04-29)

by Martin J. Fiedler <martin.fiedler@gmx.net>