KR20140021388A - 그래픽 프로세스 유닛 기반 jpeg2000 인코딩/디코딩 장치 및 방법 - Google Patents

그래픽 프로세스 유닛 기반 jpeg2000 인코딩/디코딩 장치 및 방법 Download PDF

Info

Publication number
KR20140021388A
KR20140021388A KR1020120087867A KR20120087867A KR20140021388A KR 20140021388 A KR20140021388 A KR 20140021388A KR 1020120087867 A KR1020120087867 A KR 1020120087867A KR 20120087867 A KR20120087867 A KR 20120087867A KR 20140021388 A KR20140021388 A KR 20140021388A
Authority
KR
South Korea
Prior art keywords
data
image data
gpu
memory
shared memory
Prior art date
Application number
KR1020120087867A
Other languages
English (en)
Other versions
KR101710001B1 (ko
Inventor
이정우
김범호
석진욱
이정수
정연정
윤기송
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020120087867A priority Critical patent/KR101710001B1/ko
Priority to US13/906,298 priority patent/US20140043347A1/en
Publication of KR20140021388A publication Critical patent/KR20140021388A/ko
Application granted granted Critical
Publication of KR101710001B1 publication Critical patent/KR101710001B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/63Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements

Abstract

그래픽 프로세싱 유닛(Graphic Processing Unit : GPU)에 의한 영상 코딩 방법에 있어서, 콘트롤 프로세싱 유닛(Control Processing Unit : CPU)로부터 입력된 영상 데이터를 수신하는 단계와, 상기 영상 데이터를 코딩하는 단계와, 상기 코딩된 영상 데이터를 상기 콘트롤 프로세싱 유닛에 전달하는 단계를 포함한다.

Description

그래픽 프로세스 유닛 기반 JPEG2000 인코딩/디코딩 장치 및 방법{Apparatus and Method for JPEG2000 Encoding/Decoding based on GPU}
본 발명은 디지털 시네마 영상 처리 기술에 관한 것으로, 특히 고속으로 영상을 인코딩 또는 디코딩하는 장치 및 방법에 관한 것이다.
디지털시네마 표준에서는 대용량의 영상 압축을 위해 JPEG2000 알고리즘을 채택하고 있다. JPEG2000 알고리즘은 이산 코사인 변환(Discrete Cosine Transform : DCT)을 기본으로 하는 JPEG/MPEG과는 달리 웨이블릿(Wavelet) 변환을 기본으로 한다. 웨이블릿 변환은 8x8 혹은 4x4 크기의 블록을 기본 단위로 하는 DCT 변환과는 달리 화면 전체를 부호화 기본 단위로 한다.
한편, 기존의 PC에서 화면 랜더링 등을 담당했던 그래픽 처리 장치(Graphic Processing Unit:GPU)는 최근에는 중앙 처리 장치(Central Processing Unit:CPU)과 마찬가지로 연산 프로세서로 인식되고 있다.
GPU의 기본 해법은 굉장히 많은 수의 쓰레드를 통하여 처리량을 최적화하는 것이다. 하드웨어 측면에서는 수행 가능한 쓰레드가 많은 점을 이용하여 지연시간이 긴 메모리 접근을 기다리는 동안 다른 쓰레드가 작업을 수행하도록 하여 제어 로직을 최소화시키도록 한다. 그런데, GPU는 CPU가 우수한 성능을 보이는 작업들의 실행을 위해서 설계된 것이 아니라 산술 연산 엔진으로 설계된 것이다. 따라서, 대부분의 응용 프로그램은 CPU와 GPU를 동시에 사용하여 순차적인 부분과 로직 부분은 CPU가 수행을 하고 계산량이 많은 부분은 GPU가 수행하도록 설계되어야 한다.
GPU에서 제공하는 메모리로 글로벌 메모리와 공유 메모리가 있는데, 각각의 메모리를 접근하는 시간이 공유 메모리가 글로벌 메모리와 비교해서 150배 정도가 빠르다. 따라서, 성능 향상을 위해서는 한정된 공유 메모리를 어떻게 활용할 것인가는 중요한 요소가 된다. 또한 GPU에서 데이터 입출력(글로벌 메모리에서 공유 메모리로, 공유 메모리에서 글로벌 메모리로) 및 블록 내 쓰레드 구동은 warp 단위(보통 32 쓰레드)로 수행되기 때문에 warp 단위의 배수로 쓰레드를 구동하는 것도 성능 향상에 중요한 요소가 된다.
본 발명은 멀티 CPU 및 GPU를 활용하여 JPEG2000 인코딩 및 디코딩 방법을 고속으로 처리할 수 있는 방법을 제공하는 데 있다.
본 발명은 그래픽 처리 장치(Graphic Processing Unit : GPU)에 의한 JPEG 인코딩 방법으로, 중앙 처리 장치(Control Processing Unit : CPU)로부터 입력된 영상 데이터를 수신하는 단계와, 상기 영상 데이터를 인코딩하는 단계와, 상기 인코딩된 영상 데이터를 상기 중앙 처리 장치에 전달하는 단계를 포함한다.
본 발명은 그래픽 처리 장치를 이용한 JPEG 디코딩 방법으로, 중앙 처리 장치으로부터 디코딩된 영상 데이터를 수신하는 단계와, 상기 수신된 영상 데이터를 디코딩하는 단계와, 상기 디코딩된 영상 데이터를 중앙 처리 장치에 전달하는 단계를 포함한다.
본 발명의 구성에 따르면, 웨이블릿 기반의 JPEG2000 인코딩 및 디코딩 시스템을 GPU 다중 코어 및 CPU 멀티 코어를 활용하여 수행하기 때문에 JPEG2000을 사용하는 시스템을 저가로 구축할 수 있는 효과가 있다. 또한 GPU 다중 코어를 활용하는 모듈에서 GPU 시스템에서 속도 저하를 유발하는 현상을 최소화하였다.
도 1은 본 발명의 일실시예에 따른 그래픽 프로세싱 유닛을 이용한 영상 코딩 방법을 설명하기 위한 순서도이다.
도 2는 본 발명의 일실시예에 따른 성분 분해의 상세 단계를 설명하기 위한 순서도이다.
도 3은 본 발명의 일실시예에 따른 웨이블릿 변환의 상세 단계를 설명하기 위한 순서도이다.
도 4는 본 발명의 일실시예에 따른 그래픽 프로세싱 유닛을 이용한 영상 디코딩 방법을 설명하기 위한 순서도이다.
도 5는 본 발명의 일실시예에 따른 성분 합성의 상세 단계를 설명하기 위한 순서도이다.
이하, 첨부된 도면을 참조하여 기술되는 바람직한 실시 예를 통하여 본 발명을 당업자가 용이하게 이해하고 재현할 수 있도록 상세히 기술하기로 한다.
본 발명을 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명 실시 예들의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다.
명세서 전반에 걸쳐 사용되는 용어들은 본 발명 실시 예에서의 기능을 고려하여 정의된 용어들로서, 사용자 또는 운용자의 의도, 관례 등에 따라 충분히 변형될 수 있는 사항이므로, 이 용어들의 정의는 본 발명의 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
도 1은 본 발명의 일실시예에 따른 그래픽 프로세싱 유닛을 이용한 영상 코딩 방법을 설명하기 위한 순서도이다.
도 1을 참조하면, CPU(10)는 110 단계에서 영상 데이터를 입력받아, CPU 내의 메모리에 저장한다. 이때, 영상 데이터는 내부 또는 외부의 카메라로부터 입력되거나, CPU에 의해 구동되는 디바이스의 저장부 또는 외부로부터 통신을 통해 획득된 영상 데이터일 수 있다. 영상 데이터는 일반적으로 화소 단위의 RGB 또는 YUV 신호로 구성될 수 있다. CPU(10)는 120 단계에서 CPU 메모리에 저장된 영상 데이터를 GPU 메모리로 전달한다.
그러면, GPU(20)는 130 단계에서 영상 데이터의 성분을 분해한다. GPU 메모리에 저장되어 있는 영상 데이터는 일반적으로 화소 단위로 RGBRGB 형태의 데이터이다. GPU(20)는 130 단계에서 이러한 화소 단위의 영상 데이터를 R, G, B 각각의 성분으로 구성되는 데이터로 분해한다. 이때, GPU 다중 코어 기술이 활용된다. 이때, XYZ 변환이 필요한 경우에는 R, G, B 성분으로 저장하기 전에 XYZ 변환 연산을 수행할 수도 있다. XYZ 변환을 통해 디지털시네마의 경우에는 영상 데이터가 최종적으로 X성분, Y성분, Z성분의 데이터로 구분될 수 있다. 130 단계의 성분 분해에 대해서는 하기의 도 2를 참조하여 좀 더 상세히 설명하기로 한다.
그리고, GPU(20)는 140 단계에서 GPU 메모리에 저장되어 있는 영상 데이터의 각각 성분들로 ICT(Irreversible Color Transform) 변환을 수행한다. ICT 변환은 YUV 변환과 같은 것으로 웨이블릿 변환을 수행하는 데에 있어서 좀더 효율적으로 변환하기 위해 색공간을 변환하는 것이다.
그리고, GPU(20)는 150 단계에서 GPU 메모리에 있는 ICT 변환된 데이터의 웨이블릿 부호화를 수행한다. 웨이블릿 부호화는 X, Y, Z 각각의 성분을 웨이블릿 부호화 알고리즘을 이용하여 부호화하는 단계이다. 상세하게는, x(m,n) 원데이터가 웨이블릿 부호화를 수행하면 y11(m,n), y12(m,n), y21(m,n), y22(m,n) 데이터로 분할된다. 이를 각각 LLR -1 밴드, LHR -1 밴드, HLR -1 밴드, HHR -1 밴드 데이터라 한다. 웨이블릿 부호화의 특성에 의해 LLR -1 밴드 데이터는 가로 및 세로의 크기가 각각 원본 영상 데이터의 1/2이 되는 영상 데이터이다. 그리고, LLR -1 밴드 데이터는 전술한 웨이블릿 부호화 과정을 통해 다시 4개의 데이터, 즉 LLR -2, LHR -2, HLR -2, HHR -2 데이터로 생성될 수 있다. 즉, 웨이블릿 부호화는 수회 반복될 수 있다.
예컨대, 디지털시네마의 2K 영상 데이터는 웨이블릿 부호화가 5회 반복 수행될 수 있고, 4K 영상 데이터는 웨이블릿 부호화가 6회 반복 수행될 수 있다. 이러한 웨이블릿 부호화에 대해서는 하기의 도 3을 참조하여 좀 더 상세히 살펴보기로 한다.
GPU(20)는 160 단계에서 GPU 메모리에 있는 웨이블릿 부호화된 영상 데이터를 양자화한다. 양자화는 부호화된 영상 데이터를 일정값으로 분할하는 단계로 무압축의 경우에는 양자화 변수가 1이다. GPU(20)는 170 단계에서 양자화된 영상 데이터를 CPU(10)로 전송한다.
그러면, CPU(10)는 180 단계에서 CPU 메모리에 있는 양자화된 영상 데이터를 CPU 상의 다중 쓰레드 기술을 적용한 Tier-1 및 Tier-2 코딩을 수행하여 최종 압축 데이터를 생성한다.
Tier-1 코딩 과정에서 양자화된 영상 데이터는 레이어별, 밴드별로 독립적으로 병렬로 수행된다. Tier-1 코딩 단계는 EBCOT(Embedded Block Coding with Optimized Truncation) 알고리즘을 이용하여 각 성분을 부호화하는 단계로서, LHR -1 데이터는 LHR-2 데이터 정보를 이용하여 부호화하고, HLR -1 데이터는 HLR -2 데이터 정보를, HHR -1 데이터는 HHR -2 데이터 정보를 이용하여 부호화된다. Tier-2 부호화 단계는 Tier-1 단계에서 부호화된 데이터를 실제 부호화 스트림으로 변환한다. CPU(10)과 GPU(20)에서 처리되는 과정은 서로 독립적으로 수행된다. 즉, 180단계에서 데이터가 처리되는 동안 GPU(20)은 다음 프레임 데이터를 처리한다.
도 2는 본 발명의 일실시예에 따른 성분 분해의 상세 단계를 설명하기 위한 순서도이다.
CPU 메모리에 저장되어 있는 영상 데이터의 크기는 (x_image X y_image)로 표현될 수 있는데, GPU(20)에 전달되는 영상 데이터는 image_x보다 큰 크기인 (x_stride X y_image)의 영상 데이터로, 1차원 GPU 글로벌 메모리에 복사된다. 여기서, x_stride의 크기는 256 또는 512의 배수로, GPU 글로벌 메모리는 GPU 내에서 수행되는 모든 커널 함수에서 접근 가능하다. 하지만, 하나의 커널 내에서만 접근 가능한 공유 메모리보다 읽고 쓰는 속도가 150배 정도 느리다.
GPU(20)는 210 단계에서 GPU 커널 실행을 위한 블록 및 쓰레드 크기를 결정한다. 쓰레드 개수는 GPU에서 허용하는 최대 쓰레드 개수 내에서 warp 크기의 배수로 결정한다. 블록의 개수는 전체 크기를 (thread 크기(blockDim) * 3)으로 나눈 값으로 결정한다. 이 경우에 하나의 커널은 (blockDim*3) 크기의 데이터를 처리하고, GPU 스케줄러에 의해 블록 개수만큼 커널이 구동된다.
GPU(20)는 220 단계에서 커널 내에서 속도 향상을 위해 글로벌 메모리에 저장된 (blockDim*3) 크기의 영상 데이터를 공유 메모리에 저장한다. 그리고, 230 단계에서 커널 내에서 R, G, B 성분 데이터를 저장하기 위한 공유 메모리, cx, cy, cz를 설정한다. cx, cy, cz의 크기는 각각 blockDim이다.
GPU(20)는 240 단계에서 공유 메모리에 저장된 R, G, B 성분 데이터 각각을 blockDim과 현재 쓰레드 ID를 이용하여 cx, cy, cz에 각각 저장한다. threadId, blockDim+threadId, 2*blockDim+threadID를 3으로 나누어서, 나머지가 0이면 cx, 1이면 cy, 2이면 cz에 저장한다.
그리고, GPU(20)는 250 단계에서 R,G,B 성분 데이터가 XYZ 변환이 필요한지 판단한다. 상기 250 단계의 판단 결과 XYZ 변환이 필요할 경우, GPU(20)는 260 단계에서 공유 메모리에 저장된 R, G, B 성분 데이터를 XYZ 컬러 변환시킨다.
그러나, 250 단계의 판단 결과 R, G, B 성분 데이터가 XYZ 변환이 필요하지 않은 경우 또는 260 단계의 수행 후, GPU(20)는 270 단계에서 공유 메모리에 저장된 성분 데이터를 글로벌 메모리에 저장 후 종료한다.
도 3은 웨이블릿 변환 방법을 설명하기 위한 순서도이다.
영상 압축에 사용되는 웨이블릿 변환은 2차원 변환이기 때문에 1차원 변환을 세로 방향에 대해 먼저 수행하고 가로 방향에 대해 수행된다. 세로 방향 웨이블릿 변환은 GPU의 다중 쓰레드를 활용하기 위해서 먼저 데이터를 트랜스포즈 한 후에 가로 방향 웨이블릿 변환을 수행하고 다시 원래대로 트랜스포즈 하는 방법을 사용한다.
도 3을 참조하면, GPU(20)는 310 단계에서 웨이블릿 변환을 하고자 하는 데이터의 y축 크기가 2*blockDim 보다 같거나 작은지 판단한다. 상기 310 단계의 판단 결과 y_image의 크기가 2*blockDim보다 작거나 같을 경우, GPU(20)는 320 단계에서 CPU 메모리 접근 방식과는 달리 데이터를 warp 단위로 읽어 오는 경우에 최고의 성능을 가지기 때문에 데이터를 16x16 단위로 트랜스포즈한다.
330 단계에서 Y_image의 크기가 2*blockDim보다 작기 때문에 트랜스포즈 내에 조건문없이 수행한다. 트랜스포즈한 결과는 웨이블릿 변환 과정에서 uncoalsced 현상을 최소화하기 위해 원 데이터 크기보다 큰 32 배수의 글로벌 메모리에 저장된다.
330 단계에서 (y_image x x_image) 데이터 처리를 위해 공유 메모리 크기는 y_image로 결정하고, block의 크기는 x_image로 한다. 공유 메모리를 이용하여 웨이블릿 변환(split 연산 및 lifting 연산)을 수행한다.
340 단계에서 웨이블릿 변환된 데이터를 다시 트랜스포즈하여 원영상이 저장되었던 글로벌 메모리에 저장한다.
한편, 310 단계의 판단 결과 웨이블릿 변환을 하고자 하는 데이터의 y축 크기가 2*blockDim보다 클 경우, GPU(20)는 350 단계에서 320 단계와 방식으로 트랜스포즈를 수행하지만 블록의 경계면 밖에서는 트랜스포즈하지 않도록 한다.
360 단계에서 330 단계와 동일하게 쓰레드 수와 블록 수를 결정하지만 y_image의 크기가 GPU에서 한번에 구동할 수 있는 쓰레드의 개수보다 많기 때문에 하나의 커널안에서 하나의 thread Id에 대해 2번의 연산을 수행한다.
370 단계에서 웨이블릿 변환된 데이터를 다시 트랜스포즈하여 원영상이 저장되었던 글로벌 메모리에 저장한다.
380 단계에서 (x_image x y_image) 데이터는 트랜스포즈 과정을 거치지 않고, x_image의 크기가 2*blockDim보다 작은 경우와 큰 경우로 나누어서 320과정에서부터 370 과정을 수행한다.
도 4는 본 발명의 일실시예에 따른 그래픽 프로세싱 유닛을 이용한 영상 디코딩 방법을 설명하기 위한 순서도이다.
도 4를 참조하면, CPU(10)는 410 단계에서 CPU 메모리에 저장된 데이터를 CPU상의 다중 쓰레드 기술을 적용하여 Tier-2/1 디코딩 과정을 수행한다. Tier-1 디코딩 과정에서 데이터는 레이어별, 밴드별 독립적으로 수행된다.
CPU(10)는 420 단계에서 GPU 다중 코어를 활용하기 위해 CPU 메모리에 있는 데이터를 GPU 글로벌 메모리로 전달한다. 그러면, GPU(20)는 430 단계에서 GPU 메모리에 있는 데이터에 대해 역방향 양자화를 수행한다.
그리고, GPU(20)는 440 단계에서 GPU 메모리에 있는 데이터는 GPU 다중코어 기반 역방향 웨이블릿 변환을 수행한다. 450 단계에서 GPU 메모리에 있는 데이터는 GPU 다중코어 기반 역방향 ICT 변환 과정을 수행한다.
GPU(20)는 460 단계에서 GPU 메모리에 있는 각각의 R, G, B 성분 데이터를 GPU를 활용하여 RGB 형태로 변환된다. RGB 변환이 필요한 경우에는 RGB 데이터로 저장하기 전에 변환 연산을 수행한다. 변환된 데이터는 SDI(Serial Digital Interface) 또는 화면 출력이 필요한 경우에는 CPU 메모리를 거치지 않고 GPU 메모리에서 바로 SDI 또는 화면으로 출력되고, 저장이 필요한 경우에는 CPU 메모리로 전달된다.
도 5는 본 발명의 일실시예에 따른 성분 합성의 상세 단계를 설명하기 위한 순서도이다.
GPU(20)는 510 단계에서 R, G, B 성분 데이터 저장을 위한 공유 메모리를 각각 설정한다. 각 메모리 크기는 warp 사이즈의 배수이면서 하나의 커널안에서 사용할 수 있는 최대 공유 메모리 크기를 6으로 나눈 수보다 작게 설정한다. 즉, 공유 메모리의 최대 크기가 16,000 바이트이고, 한 데이터가 4바이트로 구성되는 경우 공유 메모리 블록의 크기는 256으로 한다. 글로벌 메모리에 있는 데이터를 공유 메모리로 저장한다. 글로벌 메모리에서 읽는 단위가 warp 단위로 수행되기 때문에 uncoalsecd 현상이 발생하지 않는다.
GPU(20)는 520 단계에서 화면 출력 또는 저장을 위해 공유 메모리에 있는 성분 데이터 처리를 한다. GPU(20)는 530 단계에서 데이터 출력 또는 저장을 위해 RGB 변환이 필요한지 판단한다.
530 단계의 판단 결과 RGB 변환이 필요하다고 판단될 경우, 540 단계에서 GPU 다중 코어를 이용하여 RGB 변환을 수행한다. 그리고, GPU(20)는 550 단계에서 각각의 공유 메모리에 저장되어 있는 성분 데이터를 공유 메모리에 RGB 순서대로 저장한다. 여기서, RGB 데이터 저장을 위한 공유 메모리 크기는 256x3일 수 있다.
GPU(20)는 560 단계에서 공유 메모리에 저장된 RGB 데이터를 글로벌 메모리에 저장한다. 공유 메모리에 이미 데이터가 순서대로 저장되어 있기 때문에 글로벌 메모리에 쓰는 과정에서 uncoalsecd 현상이 발생하지 않는다.

Claims (9)

  1. 그래픽 프로세싱 유닛(Graphic Processing Unit : GPU)에 의한 영상 코딩 방법에 있어서,
    콘트롤 프로세싱 유닛(Control Processing Unit : CPU)로부터 입력된 영상 데이터를 수신하는 단계와,
    상기 영상 데이터를 코딩하는 단계와,
    상기 코딩된 영상 데이터를 상기 중앙 처리 장치에 전달하는 단계를 포함함을 특징으로 하는 그래픽 프로세스 유닛 기반 JPEG2000 인코딩 방법.
  2. 제 1항에 있어서, 상기 코딩하는 단계는
    상기 영상 데이터를 각각 빨강(Red), 녹색(Green) 및 파랑(Blue)의 성분별로 분해하는 단계와,
    상기 분해된 성분 데이터의 웨이블릿 변환을 수행하는 단계와,
    상기 웨이블릿 변환된 데이터를 양자화하는 단계를 포함함을 특징으로 하는 그래픽 프로세스 유닛 기반 JPEG2000 인코딩 방법.
  3. 제 2항에 있어서, 상기 웨이블릿 변환을 수행하는 단계는
    상기 영상 데이터의 크기에 따라 수회 반복됨을 특징으로 하는 그래픽 프로세스 유닛 기반 JPEG2000 인코딩 방법.
  4. 제 2항에 있어서, 상기 분해하는 단계는
    블록의 개수 및 쓰레드 크기를 결정하는 단계와,
    글로벌 메모리에 저장된 영상 데이터를 성분별로 설정된 공유 메모리에 저장하는 단계와,
    공유 메모리에 저장된 영상 데이터를 글로벌 메모리에 저장하는 단계를 포함함을 특징으로 하는 그래픽 프로세스 유닛 기반 JPEG2000 인코딩 방법.
  5. 제 4항에 있어서,
    XYZ 변환이 필요한지 판단하는 단계와,
    XYZ 변환이 필요할 경우, 공유 메모리에 저장된 성분 데이터를 XYZ 컬러 변환하는 단계를 더 포함함을 특징으로 하는 그래픽 프로세스 유닛 기반 JPEG2000 인코딩 방법.
  6. 제 2항에 있어서, 상기 웨이블릿 변환 단계는
    영상 데이터를 16x16 단위로 트랜스포즈하는 단계와,
    공유 메모리를 이용하여 웨이블릿 변환을 수행하는 단계와,
    웨이블릿 변환된 데이터를 다시 트랜스포즈하여 원영상이 저장되었던 글로벌 메모리에 저장하는 단계를 포함함을 특징으로 하는 그래픽 프로세스 유닛 기반 JPEG2000 인코딩 방법.
  7. 그래픽 프로세스 유닛 기반 JPEG2000 디코딩 방법에 있어서,
    콘트롤 프로세싱 유닛으로부터 전처리된 영상 데이터를 수신하는 단계와,
    상기 수신된 영상 데이터를 디코딩하는 단계와,
    상기 디코딩된 영상 데이터를 콘트롤 프로세싱 유닛에 전달하는 단계를 포함함을 특징으로 하는 그래픽 프로세스 유닛 기반 JPEG2000 디코딩 방법.
  8. 제 7항에 있어서, 상기 디코딩하는 단계는
    상기 영상 데이터의 역방향 양자화를 수행하는 단계와,
    상기 양자화된 영상 데이터를 역방향 웨이블릿 변환을 수행하는 단계와,
    상기 웨이블릿 변환된 각각의 빨강, 녹색 및 파랑의 성분 데이터를 화소 형태로 합성하는 단계를 포함함을 특징으로 하는 그래픽 프로세스 유닛 기반 JPEG2000 디코딩 방법.
  9. 제 8항에 있어서, 상기 합성하는 단계는
    각각의 성분 데이터 저장을 위한 공유 메모리를 각각 설정하는 단계와,
    화면 출력 또는 저장을 위해 공유 메모리에 있는 성분 데이터 처리를 하는 단계와,
    상기 처리된 성분 데이터를 글로벌 메모리에 저장하는 단계를 포함함을 특징으로 하는 그래픽 프로세스 유닛 기반 JPEG2000 디코딩 방법.
KR1020120087867A 2012-08-10 2012-08-10 그래픽 프로세스 유닛 기반 jpeg2000 인코딩/디코딩 장치 및 방법 KR101710001B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020120087867A KR101710001B1 (ko) 2012-08-10 2012-08-10 그래픽 프로세스 유닛 기반 jpeg2000 인코딩/디코딩 장치 및 방법
US13/906,298 US20140043347A1 (en) 2012-08-10 2013-05-30 Methods for jpeg2000 encoding and decoding based on gpu

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120087867A KR101710001B1 (ko) 2012-08-10 2012-08-10 그래픽 프로세스 유닛 기반 jpeg2000 인코딩/디코딩 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20140021388A true KR20140021388A (ko) 2014-02-20
KR101710001B1 KR101710001B1 (ko) 2017-02-27

Family

ID=50065869

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120087867A KR101710001B1 (ko) 2012-08-10 2012-08-10 그래픽 프로세스 유닛 기반 jpeg2000 인코딩/디코딩 장치 및 방법

Country Status (2)

Country Link
US (1) US20140043347A1 (ko)
KR (1) KR101710001B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160040943A (ko) 2014-10-06 2016-04-15 엔트릭스 주식회사 클라우드 스트리밍 서비스 시스템, 인코딩 처리 유닛의 작업 분리를 통한 클라우드 스트리밍 서비스 방법 및 이를 위한 장치
KR101672539B1 (ko) * 2016-03-15 2016-11-04 이노뎁 주식회사 그래픽 처리 유닛 및 그 캐싱 방법
KR101704674B1 (ko) * 2015-08-11 2017-02-08 주식회사 온캐스팅 디지털 시네마 영상의 고속 생성 장치 및 그 방법
US10652591B2 (en) 2014-07-30 2020-05-12 Sk Planet Co., Ltd. System for cloud streaming service, method for same using still-image compression technique and apparatus therefor

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9819951B2 (en) * 2012-10-18 2017-11-14 Nokia Technologies Oy Image processing method, devices and system
CN104125466B (zh) * 2014-07-10 2017-10-10 中山大学 一种基于gpu的hevc并行解码方法
WO2017049583A1 (en) * 2015-09-25 2017-03-30 Intel Corporation Gpu-cpu two-path memory copy
CN107483964A (zh) * 2017-08-07 2017-12-15 山东交通学院 一种利用gpu实现jpeg2000解压缩算法中逆小波变换的加速方法
CN107809643B (zh) * 2017-11-13 2020-11-20 苏州浪潮智能科技有限公司 一种图像的解码方法、装置及介质
KR102324609B1 (ko) 2017-12-22 2021-11-10 한국전자통신연구원 다지점 영상회의 장치 및 그 제어 방법
CN109902059B (zh) * 2019-02-28 2021-06-29 苏州浪潮智能科技有限公司 一种cpu与gpu之间的数据传输方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100225655A1 (en) * 2009-03-06 2010-09-09 Microsoft Corporation Concurrent Encoding/Decoding of Tiled Data
KR20110037051A (ko) * 2009-10-05 2011-04-13 주식회사 글로벌미디어테크 범용 그래픽 처리장치의 병렬 프로세서를 이용한 고속 영상 처리 방법
KR20110071204A (ko) * 2009-12-21 2011-06-29 한국전자통신연구원 웨이블릿 변환 기반의 jpeg2000에서의 병렬 처리 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100225655A1 (en) * 2009-03-06 2010-09-09 Microsoft Corporation Concurrent Encoding/Decoding of Tiled Data
KR20110037051A (ko) * 2009-10-05 2011-04-13 주식회사 글로벌미디어테크 범용 그래픽 처리장치의 병렬 프로세서를 이용한 고속 영상 처리 방법
KR20110071204A (ko) * 2009-12-21 2011-06-29 한국전자통신연구원 웨이블릿 변환 기반의 jpeg2000에서의 병렬 처리 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
VIRGINIA TECH, ‘GPU Memory’, Yong Cao, Referencing UIUC ECE498AL Course Notes, (2009)* *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10652591B2 (en) 2014-07-30 2020-05-12 Sk Planet Co., Ltd. System for cloud streaming service, method for same using still-image compression technique and apparatus therefor
KR20160040943A (ko) 2014-10-06 2016-04-15 엔트릭스 주식회사 클라우드 스트리밍 서비스 시스템, 인코딩 처리 유닛의 작업 분리를 통한 클라우드 스트리밍 서비스 방법 및 이를 위한 장치
KR101704674B1 (ko) * 2015-08-11 2017-02-08 주식회사 온캐스팅 디지털 시네마 영상의 고속 생성 장치 및 그 방법
KR101672539B1 (ko) * 2016-03-15 2016-11-04 이노뎁 주식회사 그래픽 처리 유닛 및 그 캐싱 방법

Also Published As

Publication number Publication date
US20140043347A1 (en) 2014-02-13
KR101710001B1 (ko) 2017-02-27

Similar Documents

Publication Publication Date Title
KR101710001B1 (ko) 그래픽 프로세스 유닛 기반 jpeg2000 인코딩/디코딩 장치 및 방법
US9386318B2 (en) Lossless image compression using differential transfer
US20140153635A1 (en) Method, computer program product, and system for multi-threaded video encoding
US20150092833A1 (en) Parallel encoding of bypass binary symbols in cabac encoder
CN105120293A (zh) 基于cpu和gpu的图像协同解码方法及装置
US20140086309A1 (en) Method and device for encoding and decoding an image
US20220014767A1 (en) Bit plane encoding of data arrays
DE112014000643T5 (de) Bilddatencodierung für Zugriff nach Raster und nach Makroblock
CN107018416B (zh) 用于视频和图像压缩的自适应贴片数据大小编码
US9948928B2 (en) Method and apparatus for encoding an image
US9271009B2 (en) Image processing apparatus and image processing method
De Cea-Dominguez et al. GPU-oriented architecture for an end-to-end image/video codec based on JPEG2000
De Souza et al. OpenCL parallelization of the HEVC de-quantization and inverse transform for heterogeneous platforms
US9819969B2 (en) Generalization of methods and systems for image compression while encoding at least one extra bit
Datla et al. Parallelizing motion JPEG 2000 with CUDA
WO2019122833A1 (en) Image compression
CN104185030A (zh) 基于gpu的jpeg2000图像解压缩实现方法
Wang et al. APBT-JPEG image coding based on GPU
Lee et al. CUDA-based JPEG2000 encoding scheme
JP2004201047A (ja) 画像処理装置、プログラム及び記憶媒体
de Cea-Dominguez et al. Real-time 16K video coding on a GPU with complexity scalable BPC-PaCo
KR20110071204A (ko) 웨이블릿 변환 기반의 jpeg2000에서의 병렬 처리 방법
Montero et al. Parallel zigzag scanning and Huffman coding for a GPU-based MPEG-2 encoder
US9384410B2 (en) Method and system for image compression while encoding at least one extra bit
Rao et al. Video Codec IP using Discrete Wavelet Transform

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20200128

Year of fee payment: 4