콘텐츠로 바로 가기

응용 노트: JPEG 압축#

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

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

VisualApplets 에서 JPEG 압축을 수행하려면 두 개의 연산자가 필요합니다. 이들은 다음과 같습니다. ImageBuffer_JPEG_Gray 그리고 다음을 설정합니다. JPEG_Encoder_Gray. 이미지 버퍼는 프레임 그래버 메모리 내의 이미지 데이터를 임시로 저장하는 데 사용되며, 픽셀을 특정 순서대로 재배열하는 데 활용됩니다. JPEG 인코더는 JPEG 압축 자체를 수행합니다.

JPEG 압축에서는 8×8 픽셀 단위의 블록이 사용되기 때문에 픽셀의 순서를 재배열해야 합니다. 다음 그림은 이러한 순서 재배열 과정을 보여줍니다.

픽셀 재정렬 방식

정렬된 이미지는 다음과 같이 표시됩니다. 이 연산자는 원본 이미지의 크기를 그대로 유지합니다.

픽셀 재정렬의 예시

순서를 재정렬한 후에는 연산자를 사용하여 JPEG 압축을 수행할 수 있습니다. JPEG_Encoder_Gray. 이 연산자의 출력은 JPEG 헤더가 포함되지 않은 허프만 스트림입니다. 압축률은 선택한 양자화 테이블에 따라 달라지며, 이 테이블은 실행 중에 변경할 수 있습니다. 허프만 코딩에는 표준 휘도 테이블이 사용됩니다.

운영자용 문서

매개변수, 입력 링크 및 연산자 기능에 대한 자세한 설명은 ‘연산자 참조 ’를 참조하십시오.

JPEG 압축 설계 예시#

다음 설계 예제에서는 JPEG 압축을 수행하는 Visual Applets 설계를 보여줍니다. 이 설계는 다음 사양을 충족해야 합니다:

  • 카메라링크 기반 영역 감지 카메라에서 이미지를 가져옵니다.
  • 이미지 데이터를 버퍼링하고 JPEG 압축을 수행합니다.
  • 소프트웨어를 통해 이미지에 JPEG 헤더를 추가하고, 선택한 이미지를 파일로 저장합니다.
  • 카메라의 이미지 높이는 일정하지 않습니다. 이렇게 변하는 이미지 높이를 JPEG 헤더에 추가해야 합니다.

VisualApplets Design#

다음 설계는 사양을 충족하기 위해 사용됩니다.

VisualApplets JPEG 압축을 위한 설계

이 간단한 설계만으로도 모든 사양을 충족하기에 충분합니다. 이미지는 베이스 영역 카메라 연산자를 사용하여 캡처됩니다. 다음으로, 이미지는 두 개의 경로로 분할됩니다. 첫 번째 경로는 이미지를 버퍼링하고 ImageBuffer_JPEG_Gray 연산자를 사용하여 픽셀 재정렬을 수행합니다. 그 후 JPEG_Encoder_Gray를 사용하여 JPEG 압축을 진행합니다. JPEG 데이터 스트림은 DMA 채널을 통해 호스트 PC 메모리로 전송됩니다. 두 번째 경로에서는 원본 이미지 데이터가 버퍼링된 후, 두 번째 DMA 채널을 사용하여 호스트 PC로 전송됩니다.

시각적 애플릿 설계 시뮬레이션#

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

JPEG 압축 설계 시뮬레이션

JPEG 데이터를 살펴보면 스트림의 길이를 파악할 수 있습니다(아래 그림 참조). JPEG 인코더의 화질 설정을 변경하면 데이터 길이도 그에 따라 달라집니다.

SimProbe의 JPEG 데이터

microDisplay에서의 런타임 테스트#

JPEG 인코더가 포함된 모든 애플릿은 microDisplay에서 직접 사용할 수 있습니다. 주어진 예제의 경우, 이 애플릿은 각 DMA 채널마다 하나의 이미지 창을 생성합니다. DMA 1번 채널에는 캡처된 원본 이미지가 표시되고, 첫 번째 DMA 채널에는 인코딩된 이미지 데이터와 DMA 길이가 함께 표시됩니다.

microDisplay의 JPEG 애플릿

JPEG 파일 생성을 위한 SDK 프로젝트#

예제의 디자인 파일과 SDK 예제 프로젝트는 다음 폴더에서 확인할 수 있습니다. examples\processing\advanced\JPEG\JPEG_gray VisualApplets 의 설치 경로 내에 있습니다.

이 SDK 프로젝트는 기본적으로 원본 이미지와 JPEG 데이터를 가져옵니다. 원본 이미지는 디스플레이로 직접 출력됩니다. JPEG 헤더가 생성되어 JPEG 데이터에 추가됩니다. 이를 통해 JPEG 파일이 완성됩니다. 사용자는 JPEG 스냅샷을 파일에 저장할 수 있습니다. 또한, 인코딩된 JPEG 데이터는 간단한 C 코드 디코더를 사용하여 디코딩됩니다. nanojpeg. 디코딩된 이미지가 표시됩니다.

사용자는 이미지 크기를 조정하거나, JPEG 품질을 변경하거나, JPEG 스냅샷 파일을 생성하거나, JPEG 데이터 16진수 파일 덤프를 생성할 수 있습니다.

헤더 생성은 단지 예시일 뿐이라는 점에 유의하십시오. Visual Applets JPEG 연산자를 사용하는 사용자는 자신의 용도에 맞게 조정된 헤더 생성기를 직접 작성해야 합니다.

JPEG 디코더 정보:

NanoJPEG -- KeyJ's Tiny Baseline JPEG Decoder

Version 1.0 (2009-04-29)

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