KR101680112B1 - 단일 명령 복수 데이터 처리를 이용한 이미지 회전 방법 - Google Patents
단일 명령 복수 데이터 처리를 이용한 이미지 회전 방법 Download PDFInfo
- Publication number
- KR101680112B1 KR101680112B1 KR1020090095321A KR20090095321A KR101680112B1 KR 101680112 B1 KR101680112 B1 KR 101680112B1 KR 1020090095321 A KR1020090095321 A KR 1020090095321A KR 20090095321 A KR20090095321 A KR 20090095321A KR 101680112 B1 KR101680112 B1 KR 101680112B1
- Authority
- KR
- South Korea
- Prior art keywords
- memory vector
- vector
- load
- load memory
- interleaving
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/39—Control of the bit-mapped memory
- G09G5/393—Arrangements for updating the contents of the bit-mapped memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2340/00—Aspects of display data processing
- G09G2340/04—Changes in size, position or resolution of an image
- G09G2340/0492—Change of orientation of the displayed image, e.g. upside-down, mirrored
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2360/00—Aspects of the architecture of display systems
- G09G2360/12—Frame memory handling
- G09G2360/123—Frame memory handling using interleaving
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Image Processing (AREA)
- Editing Of Facsimile Originals (AREA)
Abstract
본 발명은 단일 명령 복수 데이터 처리를 이용한 이미지 회전 방법에 관한 것으로, 본 발명의 일 실시 예에 따르는 n이 2 이상의 자연수일 때 단일 명령 복수 데이터 처리를 이용하여 2n×2n 픽셀의 원본 이미지를 회전시키는 이미지 회전 방법은, 원본 이미지의 픽셀의 각 행을 상응하는 로드 메모리 벡터에 로드(load)하는 로드 단계 및 로드 단계 이후에, 가장 선행하는 로드 메모리 벡터부터 각 로드 메모리 벡터를 2k 만큼 후행하는 로드 메모리 벡터와 짝지어 각 짝지은 로드 메모리 벡터 사이에 대한 전치(Transposition) 연산을 수행하는 전치 단계를 반복하되, 전치 단계의 반복 시에 k는 최초에 0으로 시작하여 전치 단계의 반복 때마다 1씩 증가하며, k가 n-1인 전치 연산을 수행한 후 전치 단계의 반복을 중지하는 전치 반복 단계를 포함할 수 있다. 본 발명의 일 실시 예에 따르면, 효과적이고 빠른 속도로 이미지를 회전시킬 수 있다.
이미지 회전, SIMD, 단일 명령 복수 데이터, 전치, 트랜스포즈, 인터리브
Description
본 발명은 이미지 회전 방법에 관한 것으로 더욱 상세하게는 단일 명령 복수 데이터 처리(SIMD: Single Instruction Multiple Data)를 이용한 이미지 회전 방법에 관한 것이다.
IT 기술의 발전으로 휴대단말기는 이제 통화 기능, 다양한 멀티미디어 기능 등을 모두 가지는 기기로 진화하고 있다.
사용자들이 점차 높은 질(quality)의 멀티미디어 기능을 요구함에 따라 휴대 단말기가 처리해야 하는 멀티미디어 데이터 량도 급격히 증가하고 있다. 따라서 대용량의 멀티미디어 데이터를 신속하게 처리할 수 있어야 하며, 특히 이미지 처리 분야에서 속도 향상이 요구되고 있다.
휴대 단말기는 작은 크기로 사용자의 손에 쥐고 사용하는 경우가 많은데, 이 때 휴대 단말기의 스크린이 기울어지면 사용자가 화면을 제대로 볼 수 없는 문제가 생긴다. 이러한 문제를 해결하기 위해 이미지를 회전시키는 기술이 필요하다.
단일 명령 복수 데이터 (SIMD; Single Instruction Multiple Data) 처리 기술은 하나의 명령어로 여러 데이터를 한 번에 처리할 수 있는 기술로 하나의 명령어로 하나의 데이터를 처리하는 기존의 방식에 비해 데이터 처리 속도를 높일 수 있다. 따라서 SIMD 기술을 이용하여 이미지 회전과 같은 멀티미디어 분야의 데이터 처리 속도를 향상시킬 수 있다. 하지만, SIMD 기술은 연속된 데이터만을 처리할 수 있으므로 이미지 90도, 270도 회전과 같은 분야에는 일반적인 방법으로는 그 성능을 제대로 발휘할 수 없다. 따라서 이미지 회전에 SIMD 기술을 적용하기 위한 효과적 방법이 요구되고 있다.
본 발명은 상술한 문제점을 해결하기 위하여 제안된 것으로 SIMD 기술을 활용하여 효과적이고 빠른 속도로 이미지를 회전시키는 이미지 회전 방법을 제공하는데 그 목적이 있다.
상기 과제를 달성하기 위하여, 본 발명의 일 실시 예에 따르는 n이 2 이상의 자연수일 때 단일 명령 복수 데이터 처리를 이용하여 2n×2n 픽셀의 원본 이미지를 회전시키는 이미지 회전 방법은 원본 이미지의 픽셀의 각 행을 상응하는 로드 메모 리 벡터에 로드(load)하는 로드 단계 및 로드 단계 이후에, 가장 선행하는 로드 메모리 벡터부터 각 로드 메모리 벡터를 2k 만큼 후행하는 로드 메모리 벡터와 짝지어 각 짝지은 로드 메모리 벡터 사이에 대한 전치(Transposition) 연산을 수행하는 전치 단계를 반복하되, 전치 단계의 반복 시에 k는 최초에 0으로 시작하여 전치 단계의 반복 때마다 1씩 증가하며, k가 n-1인 전치 연산을 수행한 후 전치 단계의 반복을 중지하는 전치 반복 단계를 포함할 수 있다.
상기 과제를 달성하기 위하여, 본 발명의 다른 실시 예에 따르는 n이 2 이상의 자연수일 때 단일 명령 복수 데이터 처리를 이용하여 2n×2n 픽셀의 원본 이미지를 회전시키는 이미지 회전 방법은 원본 이미지의 픽셀의 각 행을 상응하는 로드 메모리 벡터에 로드(load)하는 로드 단계, 로드 단계 이후에, 가장 선행하는 로드 메모리 벡터부터 각 로드 메모리 벡터를 2n-2만큼 후행하는 로드 메모리 벡터와 짝지어 각 짝지은 로드 메모리 벡터 서로간의 인터리빙(Interleaving) 연산을 수행하는 인터리빙 단계를 n-1회 반복하는 인터리빙 반복 단계 및 인터리빙 반복 단계 이후에, 가장 선행하는 로드 메모리 벡터부터 각 로드 메모리 벡터를 2n-1만큼 후행하는 로드 메모리 벡터와 짝지어 각 짝지은 로드 메모리 벡터 사이에 대한 전치(Transposition) 연산을 수행하는 전치 단계를 포함할 수 있다.
상기 과제를 달성하기 위하여, 본 발명의 또 다른 실시 예에 따르는 n이 2 이상의 자연수일 때 단일 명령 복수 데이터 처리를 이용하여 2n×2n 픽셀의 원본 이 미지를 회전시키는 이미지 회전 방법은, 원본 이미지의 픽셀의 각 행을 상응하는 로드 메모리 벡터에 로드(load)하는 로드 단계, 로드 단계 이후에, 가장 선행하는 로드 메모리 벡터부터 각 로드 메모리 벡터를 바로 뒤에 후행하는 로드 메모리 벡터와 짝지어 각 짝지은 로드 메모리 벡터 서로간의 인터리빙(Interleaving) 연산을 수행하는 인터리빙 단계 및 인터리빙 단계 이후에, 가장 선행하는 로드 메모리 벡터부터 각 로드 메모리 벡터를 2k 만큼 후행하는 로드 메모리 벡터와 짝지어 각 짝지은 로드 메모리 벡터 사이에 대한 전치(Transposition) 연산을 수행하는 전치 단계를 반복하되, 전치 단계의 반복 시에 k는 최초에 1로 시작하여 전치 단계의 반복 때마다 1씩 증가하며, k가 n-1인 전치 연산을 수행한 후 전치 단계의 반복을 중지하는 전치 반복 단계를 포함할 수 있다.
기타 실시 예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명의 일 실시 예에 따르면 SIMD 기술을 이용하여 효과적이고 빠른 속도로 이미지를 회전시키는 이미지 회전 방법을 제공할 수 있는 효과가 있다.
이하, 본 발명의 실시 예를 첨부된 도면을 참조하여 상세하게 설명하면 다음 과 같다.
실시 예를 설명함에 있어서 본 발명이 속하는 기술 분야에 익히 알려져 있고 본 발명과 직접적으로 관련이 없는 기술 내용에 대해서는 설명을 생략한다. 이는 불필요한 설명을 생략함으로써 본 발명의 요지를 흐리지 않고 더욱 명확히 전달하기 위함이다.
마찬가지 이유로 첨부 도면에 있어서 일부 구성요소는 과장되거나 생략되거나 개략적으로 도시되었다. 또한, 각 구성요소의 크기는 실제 크기를 전적으로 반영하는 것이 아니다. 각 도면에서 동일한 또는 대응하는 구성요소에는 동일한 참조 번호를 부여하였다.
이하, 본 발명의 실시 예들에 의하여 휴대 단말기를 설명하기 위한 도면들을 참고하여 본 발명에 대해 설명하도록 한다.
도 1은 본 발명의 일 실시 예에 따르는 이미지 회전 장치(100)의 블록 구성도이다.
도 1을 참조하면, 본 발명의 일 실시 예에 따르는 이미지 회전 장치(100)는 표시부(110), 레지스터부(120) 및 제어부(150)를 포함한다.
표시부(110)는 제어부(150)의 제어에 따라 이미지를 표시한다. 표시부(110)는 이미지 회전 장치(100)의 기능 수행 중에 발생하는 화면 데이터, 사용자의 키 조작 및 기능 설정 등에 따른 상태 정보를 출력할 수 있다. 또한, 표시부(110)는 제어부(150)로부터 출력되는 여러 신호와 색 정보들을 시각적으로 표시할 수 있다. 이러한 표시부(110)는 액정 표시 장치(Liquid Crystal Display: LCD), 유기 발광 다이오드(Organic Light-Emitting Diode: OLED) 등으로 형성될 수 있다.
레지스터부(120)는 레지스터를 포함한다. 레지스터는 제어부(150)의 연산을 위해 일시적으로 수치를 넣어두는 부분을 말한다. 하드웨어는 보통 고속 플립-플롭(flip-flop)으로 구성된다. 제어부(150)는 범용 메모리에서 데이터를 한번 레지스터에 넣은 다음 더하기, 빼기, 곱하기, 나누기나 논리연산 등을 실행한다. I/O (Input-output Unit) 조작의 경우에도 데이터는 한 번 레지스터에 넣어둔다. 소프트웨어 측면에서 보면 고급 언어에서는 레지스터의 존재를 알 필요가 없다. 어셈블러 측면에서는 레지스터는 변수처럼 보인다. 보통 제어부(150)는 복수의 레지스터를 갖지만 제어부(150)의 처리종류에 의해 쓰이는 레지스터는 제한 받는다. 연산처리나 I/O처리에 잘 쓰이는 어큐뮬레이터, 축적메모리의 주소를 지정하기 위한 것을 베이스 레지스터, 인덱스 레지스터 등으로 부른다. 실행중의 프로그램 위치를 나타내는 프로그램 카운터나 제어부(150)의 내부상태를 나타내는 플래그도 레지스터의 하나이다.
특히 본 실시 예에서는 제어부(150)가 수행하는 SIMD 연산을 수행하기 위해 레지스터에 데이터가 저장된다. 본 실시 예에서는 레지스터부(120)가 제어부(150)의 SIMD 연산을 위한 저장 공간으로 사용되었으나, 기타 데이터 저장 장치가 레지스터부(120)를 대체하여 사용될 수도 있다.
제어부(150)는 본 발명의 일 실시 예에 의하여 회전된 이미지를 표시하도록 표시부(110)를 제어한다.
또한, 제어부(150)는 전치 연산부(152) 및 인터리빙 연산부(154)를 포함할 수 있다.
인터리빙 연산부(154)는 인터리빙(interleaving) 연산을 수행한다.
도 2는 인터리빙(interleaving) 연산을 나타낸 도면이다.
이하 본 명세서에서 픽셀 데이터는 이미지의 한 픽셀의 색상을 나타내기 위한 데이터를 말한다. 예를 들어 256색의 RGB 방식 픽셀 데이터는 8비트(bit)의 크기를 가지고 0x000000(검은색), 0xFFFFFF(흰색) 등의 색상을 나타낼 수 있다. 픽셀의 색상을 나타내는 방식은 RGB(red-green-blue), HSV(hue, saturation, value), HSL(hue, saturation, lightness) 및 cmyk(cyan-magenta-yellow-black) 등 다양하지만 본 발명의 적용은 픽셀의 색상을 표현하는 방식에 의존하지 않으므로, 픽셀의 색상을 나타내는 방식에 관계없이 본 발명을 적용할 수 있다.
이하 본 명세서에서 메모리 벡터는 픽셀 데이터를 저장하는 메모리를 2n개 포함하는 벡터라고 가정한다. 여기서 n은 2 이상의 자연수이다. 레지스터부(120)의 레지스터는 메모리 벡터를 포함한다. 즉, 메모리 벡터를 구성하는 각 메모리는 레지스터에 포함된다.
제1 메모리 벡터 및 제2 메모리 벡터의 인터리빙(Interleaving) 연산은 제1 메모리 벡터의 각 메모리의 픽셀 데이터 뒤에 제2 메모리 벡터의 상응하는 위치의 각 메모리의 픽셀 데이터를 삽입하여 제1 메모리 벡터 및 제2 메모리 벡터에 걸쳐 저장하는 연산이다.
도 2에는 두 메모리 벡터(210, 220)의 인터리빙 연산 전의 상태(화살표 위쪽)및 인터리빙 연산 후의 상태(화살표 아래쪽)가 표시된다. 여기서는 n=3인 경우의 메모리 벡터의 예를 들고 있다. 이 경우 각 메모리 벡터는 8(=23)개의 메모리를 포함한다. 각 메모리 벡터에서 A 내지 H 및 a 내지 h가 표시된 각 칸은 하나의 메모리이고, 하나의 픽셀을 표시하기 위한 데이터를 저장하고 있다. 각 칸에 표시된 글자는 그 칸에 해당하는 메모리에 저장된 데이터를 나타낸다.
즉, 인터리빙 이전의 제1 메모리 벡터(210)의 첫 번째 메모리의 데이터인 'A' 뒤에 인터리빙 이전의 제2 메모리 벡터(220)의 첫 번째 메모리의 데이터인 'a'를 삽입하고, 인터리빙 이전의 제1 메모리 벡터(210)의 두 번째 메모리의 데이터인 'B' 뒤에 인터리빙 이전의 제2 메모리 벡터(220)의 두 번째 메모리의 데이터인 'b'를 삽입하는 등, 나머지 모든 메모리의 데이터에 대해서도 마찬가지 방식으로 데이터를 삽입하여 인터리빙 이후의 제1 메모리 벡터(210) 및 제2 메모리 벡터(220)와 같은 상태가 된다.
여기서는 n=3인 경우의 예를 들었지만, 2 이상의 임의의 자연수 n에 대하여 2n개의 메모리를 가지는 두 메모리 벡터에 대해서 마찬가지로 인터리빙 연산을 할 수 있다.
SIMD 방식에 의한 인터리빙 연산을 지원하는 시스템에서는 두 메모리 벡터에 대한 인터리빙 연산이 빠르게 수행될 수 있다. 이 때 메모리 벡터의 크기는 SIMD가 지원되는 데이터 크기의 제약 사항에 따라 정해진다.
본 발명의 실시 예에 따라서 인터리빙 연산 없이 전치 연산만으로 이미지 회전이 가능한 경우도 있다. 전치 연산만으로 이미지 회전을 수행하는 실시 예에 따르면 이미지 회전 장치(100)는 인터리빙 연산부(154)를 구비하지 않을 수 있다.
전치 연산부(152)는 전치 연산을 수행한다.
이 명세서에서 제1 메모리 벡터 및 제2 메모리 벡터의 전치 연산은 단위 크기 2i(i는 0 이상 n 미만의 정수)가 주어졌을 때 제1 메모리 벡터의 임의의 위치의 메모리 원소 쌍의 두 번째 메모리 원소와 제2 메모리 벡터의 그 임의의 위치와 대응되는 위치의 메모리 원소 쌍의 첫 번째 메모리 원소를 서로 바꾸어 저장하는 연산이다.
단위 크기는 전치 연산에서 하나의 원소(덩어리)로 취급되는 메모리의 개수를 의미한다.
본 명세서에서 메모리 원소는 메모리 벡터를 단위크기에 해당하는 크기 단위로 나눈 메모리의 집합을 말한다.
도 3 내지 도 5는 전치(transposition) 연산을 나타낸 도면이다.
도 3 내지 도 5에서 각 메모리 벡터는 23개의 메모리를 포함한다.
단위 크기는 전치 연산에서 하나의 원소(덩어리)로 취급되는 메모리의 개수를 의미한다.
두 메모리 벡터 사이의 전치 연산은 주어진 단위 크기에 따라 그 결과가 달라질 수 있다.
각 전치 대상 메모리 벡터의 크기, 즉 각 전치 대상 메모리 벡터가 포함하는 메모리의 수가 2n일 때, 단위 크기는 2i(i는 0 이상 n 미만의 정수)으로 주어질 수 있다.
도 3에서는 단위 크기가 4(=22)이고, 도 4에서는 단위 크기가 2(=21)이고, 도 3에서는 단위 크기가 1(=20)이다.
본 명세서에서 메모리 원소는 메모리 벡터를 단위크기에 해당하는 크기 단위로 나눈 메모리의 집합을 말한다.
도 3에서 단위 크기는 4이므로 제1 메모리 벡터(210)를 4개 단위로 나누면 'A', 'B', 'C', 'D'의 네 데이터를 포함한 네 메모리가 하나의 메모리 원소가 되고, 'E', 'F', 'G', 'H'의 네 데이터를 포함한 네 메모리가 또 하나의 메모리 원소가 된다.
도 3 내지 도 5의 예에서 편의상 메모리 원소별로 음영을 달리하여 표시하였다.
도 3 내지 도 5의 예에서 각 메모리 벡터의 메모리를 메모리 원소별로 구분하여 나타내면 다음과 같다. 편의상 각 메모리에 저장된 데이터를 이용하여 각 메모리를 식별하기로 한다. 하나의 소괄호'()' 속에 포함된 메모리들은 하나의 메모리 원소를 구성한다.
도 3의 경우 단위 크기는 4이고 전치 연산 이전의 제1 메모리 벡터(210)는 (A,B,C,D)/(E,F,G,H), 전치 연산 이전의 제2 메모리 벡터(220)는 (a,b,c,d)/(e,f,g,h)로 나누어진다.
도 4의 경우 단위 크기는 2이고 전치 연산 이전의 제1 메모리 벡터(210)는 (A,B)/(C,D)/(E,F)(G,H), 전치 연산 이전의 제2 메모리 벡터(220)는 (a,b)/(c,d)/(e,f)/(g,h)로 나누어진다.
도 5의 경우 단위 크기는 1이고 전치 연산 이전의 제1 메모리 벡터(210)는 (A)/(B)/(C)/(D)/(E)/(F)/(G)/(H), 전치 연산 이전의 제2 메모리 벡터(220)는 (a)/(b)/(c)/(d)/(e)/(f)/(g)/(h)로 나누어진다.
본 명세서에서, 메모리 원소 쌍은 메모리 원소를 순서대로 두 개씩 짝지은 것을 말한다. 여기서도 편의상 각 메모리에 저장된 데이터를 이용하여 각 메모리를 식별하기로 한다. 하나의 소괄호'()' 속에 포함된 메모리들은 하나의 메모리 원소를 구성하고 하나의 대괄호'{}' 속에 포함된 메모리 원소들은 하나의 메모리 원소 쌍을 구성한다.
도 3의 경우 단위 크기는 4이고 전치 연산 이전의 제1 메모리 벡터(210)는 {(A,B,C,D),(E,F,G,H)}, 전치 연산 이전의 제2 메모리 벡터(220)는 {(a,b,c,d),(e,f,g,h)}로 나누어진다.
도 4의 경우 단위 크기는 2이고 전치 연산 이전의 제1 메모리 벡터(210)는 {(A,B),(C,D)}/{(E,F),(G,H)}, 전치 연산 이전의 제2 메모리 벡터(220)는 {(a,b),(c,d)}/{(e,f),(g,h)}로 나누어진다.
도 5의 경우 단위 크기는 1이고 전치 연산 이전의 제1 메모리 벡터(210)는 {(A),(B)}/{(C),(D)}/{(E),(F)}/{(G),(H)}, 전치 연산 이전의 제2 메모리 벡터(220)는 {(a),(b)}/{(c),(d)}/{(e),(f)}/{(g),(h)}로 나누어진다.
이 명세서에서 제1 메모리 벡터 및 제2 메모리 벡터의 전치 연산은 단위 크기 2i(i는 0 이상 n 미만의 정수)가 주어졌을 때 제1 메모리 벡터의 임의의 위치의 메모리 원소 쌍의 두 번째 메모리 원소와 제2 메모리 벡터의 그 임의의 위치와 대응되는 위치의 메모리 원소 쌍의 첫 번째 메모리 원소를 서로 바꾸어 저장하는 연산이다.
예를 들어, 도 3에서는 {(A,B,C,D),(E,F,G,H)}와 대응하는 위치의 메모리 원소 쌍은 {(a,b,c,d),(e,f,g,h)}이다. 따라서 전치 연산이 수행되면 제1 메모리 벡터(210)의 메모리 원소 쌍의 두 번째 메모리 원소에 저장된 데이터인 (E,F,G,H)와 제2 메모리 벡터(220)의 메모리 원소 쌍의 첫 번째 메모리 원소에 저장된 데이터인 (a,b,c,d)가 서로 교환(swap)된다. 그 결과 제1 메모리 벡터(210)는 전치 연산 전의 상태(화살표 위쪽)에서 전치 연산 후의 상태(화살표 아래쪽)로 변한다. 또한, 제2 메모리 벡터(220)는 전치 연산 전의 상태(화살표 위쪽)에서 전치 연산 후의 상태(화살표 아래쪽)로 변한다.
마찬가지로 도 4 및 도 5에서도 단위 크기에 따라 전치 연산이 수행되는 것을 볼 수 있다. 그 결과 제1 메모리 벡터(210)는 전치 연산 전의 상태(화살표 위쪽)에서 전치 연산 후의 상태(화살표 아래쪽)로 변한다. 또한, 제2 메모리 벡 터(220)는 전치 연산 전의 상태(화살표 위쪽)에서 전치 연산 후의 상태(화살표 아래쪽)로 변한다.
여기서는 n=3인 경우의 예를 들었지만, 2 이상의 임의의 자연수 n에 대하여 2n개의 메모리를 가지는 두 메모리 벡터에 대해서 마찬가지로 전치 연산을 할 수 있다.
SIMD 방식에 의한 전치 연산을 지원하는 시스템에서는 두 메모리 벡터에 대한 전치 연산이 빠르게 수행될 수 있다. 이 때 메모리 벡터의 크기는 SIMD가 지원되는 데이터 크기의 제약 사항에 따라 정해진다.
다만, 시스템에 따라서 도 3과 같은 방식의 전치 연산만을 지원하는 시스템도 있다. 즉, 2 이상의 임의의 자연수 n에 대하여 2n개의 메모리를 가지는 두 메모리 벡터에 대해서 단위크기를 별도로 지정할 수 없고 단위 크기가 2n-1인 경우의 전치 연산만을 지원하는 시스템도 있다. 이 경우 도 4 및 도 5와 같은 방식의 전치 연산은 SIMD 방식에 의하여 지원되지 않으므로 도 4 및 도 5와 같은 방식의 전치 연산을 사용하지 않는 방식으로 이미지 회전을 구현해야 할 것이다.
도 6은 본 발명의 일 실시 예에 따르는 이미지 회전 과정의 순서도이다.
도 6을 참조하면 단계 610에서 이미지 회전 장치(100)는 원본 이미지의 픽셀의 각 행을 상응하는 로드 메모리 벡터에 로드한다. 로드 메모리 벡터는 이미지의 픽셀의 데이터가 로드되는 메모리의 벡터를 말한다.
원본 이미지는 2n×2n(n은 2 이상의 자연수) 픽셀을 가진다고 가정한다.
아래 표 1과 같이 원본 이미지가 로드 메모리 벡터에 로드될 수 있다.
이 때 메모리 벡터의 크기는 SIMD가 지원되는 데이터 크기의 제약 사항에 따라 정해진다. 예를 들어 SIMD가 28개의 픽셀 데이터를 포함하는 메모리 벡터에 대해 사용할 수 있도록 지원되는 경우, 메모리 벡터의 크기는 회전시킬 수 있는 원본 이미지는 28×28이 된다.
첫 번째 메모리 벡터 | P00 | P01 | P02 | P03 | P04 | P05 | P06 | P07 |
두 번째 메모리 벡터 | P10 | P11 | P12 | P13 | P14 | P15 | P16 | P17 |
세 번째 메모리 벡터 | P20 | P21 | P22 | P23 | P24 | P25 | P26 | P27 |
네 번째 메모리 벡터 | P30 | P31 | P32 | P33 | P34 | P35 | P36 | P37 |
다섯 번째 메모리 벡터 | P40 | P41 | P42 | P43 | P44 | P45 | P46 | P47 |
여섯 번째 메모리 벡터 | P50 | P51 | P52 | P53 | P54 | P55 | P56 | P57 |
일곱 번째 메모리 벡터 | P60 | P61 | P62 | P63 | P64 | P65 | P66 | P67 |
여덟 번째 메모리 벡터 | P70 | P71 | P72 | P73 | P74 | P75 | P76 | P77 |
표 1의 메모리 벡터들에는 8×8(n=3) 픽셀의 원본 이미지가 로드되었다.
첫 번째 메모리 벡터에는 원본 이미지의 첫 행(위쪽에서부터 시작하는 것으로 가정한다)의 픽셀들의 데이터가 로드된다.
첫 번째 메모리 벡터의 첫 번째 메모리에는 원본 이미지의 첫 행의 픽셀 중 첫 번째(예를 들면 가장 왼쪽의) 픽셀의 데이터가 로드되고, 첫 번째 메모리 벡터의 두 번째 메모리에는 원본 이미지의 첫 행의 픽셀 중 두 번째(예를 들면, 왼쪽에서 두 번째) 픽셀의 데이터가 로드되는 것과 같은 방식으로 각 메모리에 원본 이미지의 상응하는 픽셀의 데이터가 로드된다.
또한, 마찬가지로 두 번째 메모리 벡터에는 원본 이미지의 두 번째 행(위쪽에서부터 시작하는 것으로 가정한다)의 픽셀들의 데이터가 로드된다. 같은 방식으로 각 메모리 벡터에는 상응하는 행의 픽셀들의 데이터가 로드된다.
메모리 벡터의 순서는 원본 이미지의 위쪽부터 세었을 때의 행의 순서와 동일하게 설정될 수도 있고, 원본 이미지의 위쪽부터 세었을 때의 행의 순서와 동일하게 설정될 수도 있다. 어느 경우든, 동일한 규칙을 적용하여 이미지를 로드하고, 로드한 이미지를 표시부(110)에 표시하면 된다. 다만, 이하에서는 편의상 메모리 벡터의 순서와 원본 이미지의 위쪽부터 세었을 때의 행의 순서가 동일하다고 가정한다.
메모리 벡터의 메모리의 순서는 원본 이미지의 대응하는 각 행에서의 픽셀의 왼쪽부터 세었을 때의 순서와 동일하게 설정될 수도 있고, 원본 이미지의 대응하는 각 행에서의 픽셀의 오른쪽부터 세었을 때의 순서와 동일하게 설정될 수도 있다. 다만, 이하에서는 편의상 메모리 벡터의 메모리의 순서와 원본 이미지의 대응하는 각 행에서의 왼쪽부터 세었을 때의 픽셀의 순서가 동일하다고 가정한다. 즉, 위 표 1에서의 위치와 실제 표시부(110)에서 표시되는 픽셀의 위치가 동일하다고 가정한다.
로드 메모리 벡터는 위와 같이 순서가 있으며, 한 로드 메모리 벡터가 다른 메모리 벡터로부터 a만큼 후행한다는 표현은 로드 메모리 벡터를 표 1과 같이 표현했을 때 한 로드 메모리 벡터가 다른 메모리 벡터보다 a행 만큼 아래쪽에 있게 되는 경우에 사용된다. 즉, 순서대로 순번을 매겼을 때 순번의 차이만큼 후행하는 것이다.
또한, 로드 메모리 벡터 중 가장 선행하는 로드 메모리 벡터는 로드 메모리 벡터를 표 1과 같이 표현했을 때 가장 위에 위치하는 로드 메모리 벡터를 말한다. 즉, 로드 메모리 벡터 중 첫 번째 벡터가 가장 선행하는 로드 메모리 벡터이다.
표 1에 대한 설명에서 8×8의 픽셀을 가진 이미지에 대하여 설명하였으나 마찬가지 방식으로 2 이상의 임의의 자연수 n에 대해 2n×2n의 픽셀을 가지는 이미지는 각 메모리 벡터가 2n개의 메모리를 가지는 2n개의 메모리 벡터에 로딩될 수 있음은 자명하다.
단계 620에서 제어부(150)는 전치 연산 및/또는 인터리빙 연산을 한다.
단계 620의 세부적 방식에 따라 크게 세 가지의 실시 예가 있다.
상술한 바와 같이 원본 이미지는 2n×2n(n은 2 이상의 자연수) 픽셀을 가진다고 가정한다.
제1 실시 예는 전치 연산에 관한 단계를 n번 수행하는 방식이다. 제2 실시 예는 인터리빙 연산에 관한 단계를 n-1회 수행한 후 전치 연산에 관한 단계를 1번 수행하는 방식이다. 제3 실시 예는 인터리빙 연산에 관한 단계를 1회 수행한 후 전치 연산에 관한 단계를 n-1회 수행하는 방식이다.
먼저, 본 발명의 제1 실시 예에 따르면 가장 선행하는 로드 메모리 벡터부터 각 로드 메모리 벡터를 단위크기만큼 후행하는 로드 메모리 벡터와 짝지어 각 짝지은 로드 메모리 벡터 사이에 대한 전치 연산을 수행하는 전치 단계를 반복한다. 이 때, 이미 다른 로드 메모리 벡터와 짝지은 로드 메모리 벡터는 다시 다른 로드 메모리 벡터와 짝짓지 않는다. 또한, 단위 크기는 2k로 하고, 전치 단계의 반복 시에 k는 최초에 0으로 시작하여 전치 단계의 반복 때마다 1씩 증가하며, k가 n-1인 전치 연산을 수행한 후 전치 단계의 반복을 중지한다.
이를 개략적으로 설명하면 표 2와 같다.
단계1 | 20 아래의 벡터와 짝지어서 20을 단위 크기로 하여 전치 연산 |
단계2 | 21 아래의 벡터와 짝지어서 21을 단위 크기로 하여 전치 연산 |
단계3 | 22 아래의 벡터와 짝지어서 22을 단위 크기로 하여 전치 연산 |
... | ... |
단계n | 2n-1 아래의 벡터와 짝지어서 2n-1을 단위 크기로 하여 전치 연산 |
표 2를 n=3인 경우(즉, 표 1의 데이터에 적용하는 경우)에 적용하면 표 3과 같다.
단계1 | 20 아래의 벡터와 짝지어서 20을 단위 크기로 하여 전치 연산 |
단계2 | 21 아래의 벡터와 짝지어서 21을 단위 크기로 하여 전치 연산 |
단계3 | 22 아래의 벡터와 짝지어서 22을 단위 크기로 하여 전치 연산 |
표 3의 단계 1은 단위 크기를 1로 하고 첫 번째 로드 메모리 벡터와 두 번째 로드 메모리 벡터 사이의 전치 연산, 세 번째 로드 메모리 벡터와 네 번째 로드 메모리 벡터 사이의 전치 연산, 다섯 번째 로드 메모리 벡터와 여섯 번째 로드 메모리 벡터 사이의 전치 연산, 일곱 번째 로드 메모리 벡터와 여덟 번째 로드 메모리 벡터 사이의 전치 연산을 수행한다. 달리 말하면, 1개 아래의 로드 메모리 벡터와 짝을 지어 전치 연산을 수행한다.
표 3의 단계 1을 수행한 뒤에는 로드 메모리 벡터는 표 4와 같은 상태가 된다.
첫 번째 메모리 벡터 | P00 | P10 | P20 | P30 | P02 | P12 | P22 | P32 |
두 번째 메모리 벡터 | P01 | P11 | P21 | P31 | P03 | P13 | P23 | P33 |
세 번째 메모리 벡터 | P04 | P14 | P24 | P34 | P06 | P16 | P26 | P36 |
네 번째 메모리 벡터 | P05 | P15 | P25 | P35 | P07 | P17 | P27 | P37 |
다섯 번째 메모리 벡터 | P40 | P50 | P60 | P70 | P42 | P52 | P62 | P72 |
여섯 번째 메모리 벡터 | P41 | P51 | P61 | P71 | P43 | P53 | P63 | P73 |
일곱 번째 메모리 벡터 | P44 | P54 | P64 | P74 | P46 | P56 | P66 | P76 |
여덟 번째 메모리 벡터 | P45 | P55 | P65 | P75 | P47 | P57 | P67 | P77 |
표 3의 단계 2는 단위 크기를 2로 하고 첫 번째 로드 메모리 벡터와 세 번째 로드 메모리 벡터 사이의 전치 연산, 두 번째 로드 메모리 벡터와 네 번째 로드 메모리 벡터 사이의 전치 연산, 다섯 번째 로드 메모리 벡터와 일곱 번째 로드 메모리 벡터 사이의 전치 연산, 여섯 번째 로드 메모리 벡터와 여덟 번째 로드 메모리 벡터 사이의 전치 연산을 수행한다. 표 3의 단계 2을 수행한 뒤에는 로드 메모리 벡터는 표 5와 같은 상태가 된다.
첫 번째 메모리 벡터 | P00 | P10 | P20 | P30 | P04 | P14 | P24 | P34 |
두 번째 메모리 벡터 | P01 | P11 | P21 | P31 | P05 | P15 | P25 | P35 |
세 번째 메모리 벡터 | P02 | P12 | P22 | P32 | P06 | P16 | P26 | P36 |
네 번째 메모리 벡터 | P03 | P13 | P23 | P33 | P07 | P17 | P27 | P37 |
다섯 번째 메모리 벡터 | P40 | P50 | P60 | P70 | P44 | P54 | P64 | P74 |
여섯 번째 메모리 벡터 | P41 | P51 | P61 | P71 | P45 | P55 | P65 | P75 |
일곱 번째 메모리 벡터 | P42 | P52 | P62 | P72 | P46 | P56 | P66 | P76 |
여덟 번째 메모리 벡터 | P43 | P53 | P63 | P73 | P47 | P57 | P67 | P77 |
표 3의 단계 3은 단위 크기를 4로 하고 첫 번째 로드 메모리 벡터와 다섯 번째 로드 메모리 벡터 사이의 전치 연산, 두 번째 로드 메모리 벡터와 여섯 번째 로드 메모리 벡터 사이의 전치 연산, 세 번째 로드 메모리 벡터와 일곱 번째 로드 메모리 벡터 사이의 전치 연산, 네 번째 로드 메모리 벡터와 여덟 번째 로드 메모리 벡터 사이의 전치 연산을 수행한다. 표 3의 단계 3을 수행한 뒤에는 로드 메모리 벡터는 표 6과 같은 상태가 된다.
첫 번째 메모리 벡터 | P00 | P10 | P20 | P30 | P40 | P50 | P60 | P70 |
두 번째 메모리 벡터 | P01 | P11 | P21 | P31 | P41 | P51 | P61 | P71 |
세 번째 메모리 벡터 | P02 | P12 | P22 | P32 | P42 | P52 | P62 | P72 |
네 번째 메모리 벡터 | P03 | P13 | P23 | P33 | P43 | P53 | P63 | P73 |
다섯 번째 메모리 벡터 | P04 | P14 | P24 | P34 | P44 | P54 | P64 | P74 |
여섯 번째 메모리 벡터 | P05 | P15 | P25 | P35 | P45 | P55 | P65 | P75 |
일곱 번째 메모리 벡터 | P06 | P16 | P26 | P36 | P46 | P56 | P66 | P76 |
여덟 번째 메모리 벡터 | P07 | P17 | P27 | P37 | P47 | P57 | P67 | P77 |
단계 630에서 이미지 회전 장치(100)는 로드 메모리 벡터를 역순으로 저장한다.
즉, 표 6의 로드 메모리 벡터의 상하 방향 순서를 정 반대로 하여 다시 저장한다.
단계 630을 수행한 뒤에는 로드 메모리 벡터는 표 7과 같은 상태가 된다.
첫 번째 메모리 벡터 | P07 | P17 | P27 | P37 | P47 | P57 | P67 | P77 |
두 번째 메모리 벡터 | P06 | P16 | P26 | P36 | P46 | P56 | P66 | P76 |
세 번째 메모리 벡터 | P05 | P15 | P25 | P35 | P45 | P55 | P65 | P75 |
네 번째 메모리 벡터 | P04 | P14 | P24 | P34 | P44 | P54 | P64 | P74 |
다섯 번째 메모리 벡터 | P03 | P13 | P23 | P33 | P43 | P53 | P63 | P73 |
여섯 번째 메모리 벡터 | P02 | P12 | P22 | P32 | P42 | P52 | P62 | P72 |
일곱 번째 메모리 벡터 | P01 | P11 | P21 | P31 | P41 | P51 | P61 | P71 |
여덟 번째 메모리 벡터 | P00 | P10 | P20 | P30 | P40 | P50 | P60 | P70 |
표 7은 표 1의 원본 이미지에 대한 로드 메모리 벡터를 반시계 방향으로 90도 회전시킨 상태이다. 표 7에 저장된 픽셀 데이터에 따라 표시부(110)에 이미지를 표시하면 원본 이미지를 반시계 방향으로 90도 회전시킨 이미지를 표시할 수 있다.
많은 CPU에서 인터리빙 연산에 비하여 전치 연산에 필요한 CPU클락(시간)이 더 작으므로, 이러한 방식의 이미지 회전은 유용하게 사용될 수 있다.
제1 실시 예에서 이미지의 크기가 8×8인 경우가 설명되었으나, 2 이상의 자연수인 모든 n에 대해서 2n×2n의 원본 이미지를 회전시키는 경우에 모두 사용될 수 있음은 자명하다.
아래에서는 제2 실시 예의 경우를 설명한다.
먼저, 인터리빙 반복 단계에서 인터리빙 연산부(154)는 가장 선행하는 로드 메모리 벡터부터 각 로드 메모리 벡터를 2n-2만큼 후행하는 로드 메모리 벡터와 짝지어 각 짝지은 로드 메모리 벡터 서로간의 인터리빙 연산을 수행하는 단계를 n-1회 반복한다. 이 때 다른 로드 메모리 벡터와 짝지은 로드 메모리 벡터는 다시 다른 로드 메모리 벡터와 짝짓지 않는다.
다음으로, 전치 단계에서 가장 선행하는 로드 메모리 벡터부터 각 로드 메모리 벡터를 단위크기만큼 후행하는 로드 메모리 벡터와 짝지어 각 짝지은 로드 메모리 벡터 사이에 대한 전치 연산을 수행하는 전치 단계를 한다. 여기서 이미 다른 로드 메모리 벡터와 짝지은 로드 메모리 벡터는 다시 다른 로드 메모리 벡터와 짝짓지 않는다. 단위 크기는 2n-1이다.
표 8은 본 발명의 제2 실시 예에 따라 2n×2n의 원본 이미지를 회전시키는 과정을 나타낸다.
단계1 | 2n-2 아래의 벡터와 짝지어서 인터리빙 연산 |
단계2 | 2n-2 아래의 벡터와 짝지어서 인터리빙 연산 |
... | ... |
단계n-1 | 2n-2 아래의 벡터와 짝지어서 인터리빙 연산 |
단계n | 2n-1 아래의 벡터와 짝지어서 2n-1을 단위 크기로 하여 전치 연산 |
표 8을 n=3인 경우(즉, 표 1의 데이터에 적용하는 경우)에 적용하면 표 9와 같다.
단계1 | 21 아래의 벡터와 짝지어서 인터리빙 연산 |
단계2 | 21 아래의 벡터와 짝지어서 인터리빙 연산 |
단계3 | 22 아래의 벡터와 짝지어서 22을 단위 크기로 하여 전치 연산 |
표 9의 단계 1은 첫 번째 로드 메모리 벡터와 세 번째 로드 메모리 벡터 사이의 인터리빙 연산, 두 번째 로드 메모리 벡터와 네 번째 로드 메모리 벡터 사이의 인터리빙 연산, 다섯 번째 로드 메모리 벡터와 일곱 번째 로드 메모리 벡터 사이의 인터리빙 연산, 여섯 번째 로드 메모리 벡터와 여덟 번째 로드 메모리 벡터 사이의 인터리빙 연산을 수행한다. 달리 말하면, 2개 아래의 로드 메모리 벡터와 짝을 지어 인터리빙 연산을 수행한다.
표 1의 데이터에 대해 표 9의 단계 1을 수행한 뒤에는 로드 메모리 벡터는 표 10과 같은 상태가 된다.
첫 번째 메모리 벡터 | P00 | P20 | P01 | P21 | P02 | P22 | P03 | P23 |
두 번째 메모리 벡터 | P04 | P24 | P05 | P25 | P06 | P26 | P07 | P27 |
세 번째 메모리 벡터 | P10 | P30 | P11 | P31 | P12 | P32 | P13 | P33 |
네 번째 메모리 벡터 | P14 | P34 | P15 | P35 | P16 | P36 | P17 | P37 |
다섯 번째 메모리 벡터 | P40 | P60 | P41 | P61 | P42 | P62 | P43 | P63 |
여섯 번째 메모리 벡터 | P44 | P64 | P45 | P65 | P46 | P66 | P47 | P67 |
일곱 번째 메모리 벡터 | P50 | P70 | P51 | P71 | P52 | P72 | P53 | P73 |
여덟 번째 메모리 벡터 | P54 | P74 | P55 | P75 | P56 | P76 | P57 | P77 |
표 9의 단계 2는 첫 번째 로드 메모리 벡터와 세 번째 로드 메모리 벡터 사이의 인터리빙 연산, 두 번째 로드 메모리 벡터와 네 번째 로드 메모리 벡터 사이의 인터리빙 연산, 다섯 번째 로드 메모리 벡터와 일곱 번째 로드 메모리 벡터 사이의 인터리빙 연산, 여섯 번째 로드 메모리 벡터와 여덟 번째 로드 메모리 벡터 사이의 인터리빙 연산을 수행한다. 달리 말하면, 2개 아래의 로드 메모리 벡터와 짝을 지어 인터리빙 연산을 수행한다.
표 9의 단계 2를 수행한 뒤에는 로드 메모리 벡터는 표 11과 같은 상태가 된다.
첫 번째 메모리 벡터 | P00 | P10 | P20 | P30 | P01 | P11 | P21 | P31 |
두 번째 메모리 벡터 | P02 | P12 | P22 | P32 | P03 | P13 | P23 | P33 |
세 번째 메모리 벡터 | P04 | P14 | P24 | P34 | P05 | P15 | P25 | P35 |
네 번째 메모리 벡터 | P06 | P16 | P26 | P36 | P07 | P17 | P27 | P37 |
다섯 번째 메모리 벡터 | P40 | P50 | P60 | P70 | P41 | P51 | P61 | P71 |
여섯 번째 메모리 벡터 | P42 | P52 | P62 | P72 | P43 | P53 | P63 | P73 |
일곱 번째 메모리 벡터 | P44 | P54 | P64 | P74 | P45 | P55 | P65 | P75 |
여덟 번째 메모리 벡터 | P46 | P56 | P66 | P76 | P47 | P57 | P67 | P77 |
표 9의 단계 3은 단위 크기를 4로 하고 첫 번째 로드 메모리 벡터와 다섯 번째 로드 메모리 벡터 사이의 전치 연산, 두 번째 로드 메모리 벡터와 여섯 번째 로드 메모리 벡터 사이의 전치 연산, 세 번째 로드 메모리 벡터와 일곱 번째 로드 메모리 벡터 사이의 전치 연산, 네 번째 로드 메모리 벡터와 여덟 번째 로드 메모리 벡터 사이의 전치 연산을 수행한다. 표 9의 단계 3을 수행한 뒤에는 로드 메모리 벡터는 제1 실시 예의 경우와 마찬가지로 표 6의 상태가 된다.
단계 630에서 이미지 회전 장치(100)는 로드 메모리 벡터를 역순으로 저장한다.
즉, 표 6의 로드 메모리 벡터의 상하 방향 순서를 정 반대로 하여 다시 저장한다.
단계 630을 수행한 뒤에는 로드 메모리 벡터는 제1 실시 예에서와 같이 표 7과 같은 상태가 된다.
제2 실시 예에서 이미지의 크기가 8×8인 경우가 설명되었으나, 2 이상의 자연수인 모든 n에 대해서 2n×2n의 원본 이미지를 회전시키는 경우에 모두 사용될 수 있음은 자명하다.
아래에서는 제3 실시 예의 경우를 설명한다.
먼저, 인터리빙 단계에서 인터리빙 연산부(154)는 가장 선행하는 로드 메모리 벡터부터 각 로드 메모리 벡터를 20만큼 후행하는(즉, 바로 뒤에 후행하는) 로드 메모리 벡터와 짝지어 각 짝지은 로드 메모리 벡터 서로간의 인터리빙 연산을 수행한다. 이 때 다른 로드 메모리 벡터와 짝지은 로드 메모리 벡터는 다시 다른 로드 메모리 벡터와 짝짓지 않는다.
다음으로, 전치 반복 단계에서, 가장 선행하는 로드 메모리 벡터부터 각 로드 메모리 벡터를 단위크기만큼 후행하는 로드 메모리 벡터와 짝지어 각 짝지은 로드 메모리 벡터 사이에 대한 전치 연산을 수행하는 전치 단계를 반복한다. 이 때, 이미 다른 로드 메모리 벡터와 짝지은 로드 메모리 벡터는 다시 다른 로드 메모리 벡터와 짝짓지 않는다. 또한, 단위 크기는 2k로 하고, 전치 단계의 반복 시에 k는 최초에 1로 시작하여 전치 단계의 반복 때마다 1씩 증가하며, k가 n-1인 전치 연산을 수행한 후 전치 단계의 반복을 중지한다.
표 12는 본 발명의 제3 실시 예에 따라 2n×2n의 원본 이미지를 회전시키는 과정을 나타낸다.
단계1 | 20 아래의 벡터와 짝지어서 인터리빙 연산 |
단계2 | 21 아래의 벡터와 짝지어서 21을 단위 크기로 하여 전치 연산 |
... | ... |
단계n-1 | 2n-2 아래의 벡터와 짝지어서 2n-2을 단위 크기로 하여 전치 연산 |
단계n | 2n-1 아래의 벡터와 짝지어서 2n-1을 단위 크기로 하여 전치 연산 |
표 12를 n=3인 경우(즉, 표 1의 데이터에 적용하는 경우)에 적용하면 표 13과 같다.
단계1 | 20 아래의 벡터와 짝지어서 인터리빙 연산 |
단계2 | 21 아래의 벡터와 짝지어서 21을 단위 크기로 하여 전치 연산 |
단계3 | 22 아래의 벡터와 짝지어서 22을 단위 크기로 하여 전치 연산 |
표 13의 단계 1은 첫 번째 로드 메모리 벡터와 두 번째 로드 메모리 벡터 사이의 인터리빙 연산, 세 번째 로드 메모리 벡터와 네 번째 로드 메모리 벡터 사이의 인터리빙 연산, 다섯 번째 로드 메모리 벡터와 여섯 번째 로드 메모리 벡터 사이의 인터리빙 연산, 일곱 번째 로드 메모리 벡터와 여덟 번째 로드 메모리 벡터 사이의 인터리빙 연산을 수행한다. 달리 말하면, 바로 아래의 로드 메모리 벡터와 짝을 지어 인터리빙 연산을 수행한다.
표 1의 데이터에 대해 표 13의 단계 1을 수행한 뒤에는 로드 메모리 벡터는 표 14와 같은 상태가 된다.
첫 번째 메모리 벡터 | P00 | P10 | P01 | P11 | P02 | P12 | P03 | P13 |
두 번째 메모리 벡터 | P04 | P14 | P05 | P15 | P06 | P16 | P07 | P17 |
세 번째 메모리 벡터 | P20 | P30 | P21 | P31 | P22 | P32 | P23 | P33 |
네 번째 메모리 벡터 | P24 | P34 | P25 | P35 | P26 | P36 | P27 | P37 |
다섯 번째 메모리 벡터 | P40 | P50 | P41 | P51 | P42 | P52 | P43 | P53 |
여섯 번째 메모리 벡터 | P44 | P54 | P45 | P55 | P46 | P56 | P47 | P57 |
일곱 번째 메모리 벡터 | P60 | P70 | P61 | P71 | P62 | P72 | P63 | P73 |
여덟 번째 메모리 벡터 | P64 | P74 | P65 | P75 | P66 | P76 | P67 | P77 |
표 13의 단계 2는 단위크기를 2로 하여 첫 번째 로드 메모리 벡터와 세 번째 로드 메모리 벡터 사이의 전치 연산, 두 번째 로드 메모리 벡터와 네 번째 로드 메모리 벡터 사이의 전치 연산, 다섯 번째 로드 메모리 벡터와 일곱 번째 로드 메모리 벡터 사이의 전치 연산, 여섯 번째 로드 메모리 벡터와 여덟 번째 로드 메모리 벡터 사이의 전치 연산을 수행한다. 달리 말하면, 2개 아래의 로드 메모리 벡터와 짝을 지어 단위 크기를 2로 하여 전치 연산을 수행한다.
표 13의 단계 2를 수행한 뒤에는 로드 메모리 벡터는 표 15와 같은 상태가 된다.
첫 번째 메모리 벡터 | P00 | P10 | P20 | P30 | P02 | P12 | P22 | P32 |
두 번째 메모리 벡터 | P01 | P11 | P21 | P31 | P03 | P13 | P23 | P33 |
세 번째 메모리 벡터 | P04 | P14 | P24 | P34 | P06 | P16 | P26 | P36 |
네 번째 메모리 벡터 | P05 | P15 | P25 | P35 | P07 | P17 | P27 | P37 |
다섯 번째 메모리 벡터 | P40 | P50 | P60 | P70 | P42 | P52 | P62 | P72 |
여섯 번째 메모리 벡터 | P41 | P51 | P61 | P71 | P43 | P53 | P63 | P73 |
일곱 번째 메모리 벡터 | P44 | P54 | P64 | P74 | P46 | P56 | P66 | P76 |
여덟 번째 메모리 벡터 | P45 | P55 | P65 | P75 | P47 | P57 | P67 | P77 |
표 13의 단계 3은 단위 크기를 4로 하고 첫 번째 로드 메모리 벡터와 다섯 번째 로드 메모리 벡터 사이의 전치 연산, 두 번째 로드 메모리 벡터와 여섯 번째 로드 메모리 벡터 사이의 전치 연산, 세 번째 로드 메모리 벡터와 일곱 번째 로드 메모리 벡터 사이의 전치 연산, 네 번째 로드 메모리 벡터와 여덟 번째 로드 메모리 벡터 사이의 전치 연산을 수행한다. 표 13의 단계 3을 수행한 뒤에는 로드 메모리 벡터는 제1 실시 예 및 제2 실시 예의 경우와 마찬가지로 표 6의 상태가 된다.
단계 630에서 이미지 회전 장치(100)는 로드 메모리 벡터를 역순으로 저장한다.
즉, 표 6의 로드 메모리 벡터의 상하 방향 순서를 정 반대로 하여 다시 저장한다.
단계 630을 수행한 뒤에는 로드 메모리 벡터는 제1 실시 예 및 제2 실시 예에서와 같이 표 7과 같은 상태가 된다.
제3 실시 예에서 이미지의 크기가 8×8인 경우가 설명되었으나, 2 이상의 자연수인 모든 n에 대해서 2n×2n의 원본 이미지를 회전시키는 경우에 모두 사용될 수 있음은 자명하다.
제3 실시 예는 제1 실시 예 또는 제2 실시 예에 비해서 전치 연산의 수가 적고, 대신 인터리빙 연산의 수가 많다. 전치 연산의 수행이 인터리빙 연산의 수행보다 더 빠른 CPU에서는 제1 실시 예 및 제2 실시 예가 제3 실시 예에 비해 더 유용할 수 있다. 다만, 일부 CPU에서는 단위 크기가 2n-1인 경우에만 전치 연산을 효율적으로 수행할 수 있는데, 이 경우에는 제3 실시 예가 유용할 수 있다.
도 7은 본 발명의 다른 실시 예에 따르는 이미지 회전 과정의 순서도이다.
도 7을 참조하면, 단계 710에서 이미지 회전 장치(100)는 원본 이미지의 픽셀의 각 행을 상응하는 역순의 로드 메모리 벡터에 로드한다.
즉, 원본 이미지의 첫 번째 행을 제일 마지막 메모리 벡터에 로드하고, 반대로 원본 이미지의 마지막 행을 제일 첫 번째 메모리 벡터에 로드하는 식으로 로드한다. 이 과정은 원본 이미지의 각 행을 순서대로 로드한 뒤 이를 역순으로 로드하는 것으로 표현될 수도 있다.
단계 620에서는 도 6의 단계 620에서 설명한 바와 같은 과정이 수행된다.
도 7의 과정에서 로드 메모리 벡터의 순서를 역순으로 바꾸는 과정이 단계 620 이후에서 단계 620 이전으로 변경되었다. 도 7의 실시 예를 통하면 원본 이미지는 시계 방향으로 90도 회전된다. 도 6의 실시 예에서는 원본 이미지는 반시계 방향으로 회전되었다.
본 발명에서 2n×2n픽셀의 이미지만을 다루고 있지만, 이러한 규격으로 표현될 수 없는 이미지도 2n×2n픽셀을 단위로 나누어 회전시킨 뒤 다시 조합하는 방식으로 회전시킬 수 있다. 2n×2n픽셀을 단위로 나누고 남는 부분은 다른 방식으로 회전시킬 수도 있을 것이다.
본 발명의 일 실시 예에 따른 이미지 회전 장치는 휴대폰, PDA(Personal Digital Assistant), 내비게이션(navigation), 디지털 방송 수신기, PMP(Portable Multimedia Player) 등과 같은 휴대용 전자기기 장치에서 구현될 수 있다.
본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구의 범위에 의하여 나타내어지며, 특허청구의 범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
한편, 본 명세서와 도면에는 본 발명의 바람직한 실시 예에 대하여 개시하였으며, 비록 특정 용어들이 사용되었으나, 이는 단지 본 발명의 기술 내용을 쉽게 설명하고 발명의 이해를 돕기 위한 일반적인 의미에서 사용된 것이지, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시 예 외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명한 것이다.
도 1은 본 발명의 일 실시 예에 따르는 이미지 회전 장치의 블록 구성도이다.
도 2는 인터리빙(interleaving) 연산을 나타낸 도면이다.
도 3 내지 도 5는 전치(transposition) 연산을 나타낸 도면이다.
도 6은 본 발명의 일 실시 예에 따르는 이미지 회전 과정의 순서도이다.
도 7은 본 발명의 다른 실시 예에 따르는 이미지 회전 과정의 순서도이다.
Claims (18)
- n이 2 이상의 자연수일 때 2n×2n 픽셀의 원본 이미지를 회전시키는 이미지 회전 방법에 있어서,상기 원본 이미지의 픽셀의 각 행을 상응하는 로드 메모리 벡터에 로드(load) 하는 로드 단계; 및상기 로드 단계 이후에, 상기 로드 메모리 벡터를 서로 짝지어 각 짝지은 로드 메모리 벡터 사이에 대한 전치(Transposition) 연산을 수행하는 전치 단계를 1회 이상 수행하고, 상기 로드 메모리 벡터를 서로 짝지어 각 짝지은 로드 메모리 벡터 서로 간의 인터리빙(Interleaving) 연산을 수행하는 인터리빙 단계를 0회 이상 수행하되, 상기 전치 단계 및 인터리빙 단계는 도합 n회 수행하는 연산 단계를 포함하는 이미지 회전 방법.
- 제1항에 있어서,상기 연산 단계는,상기 로드 단계 이후에, 가장 선행하는 로드 메모리 벡터부터 각 로드 메모리 벡터를 2n-2만큼 후행하는 로드 메모리 벡터와 짝지어 각 짝지은 로드 메모리 벡터 서로 간의 인터리빙 연산을 수행하는 인터리빙 단계를 n-1회 반복하는 인터리빙 반복 단계; 및상기 인터리빙 반복 단계 이후에, 가장 선행하는 로드 메모리 벡터부터 각 로드 메모리 벡터를 2n-1만큼 후행하는 로드 메모리 벡터와 짝지어 각 짝지은 로드 메모리 벡터 사이에 대한 전치 연산을 수행하는 전치 단계를 포함하는 이미지 회전 방법.
- 제1항에 있어서,상기 연산 단계는,상기 로드 단계 이후에, 가장 선행하는 로드 메모리 벡터부터 각 로드 메모리 벡터를 2k 만큼 후행하는 로드 메모리 벡터와 짝지어 각 짝지은 로드 메모리 벡터 사이에 대한 전치 연산을 수행하는 전치 단계를 반복하되, 상기 전치 단계의 반복 시에 상기 k는 최초에 0으로 시작하여 상기 전치 단계의 반복 때마다 1씩 증가하며, k가 n-1인 전치 연산을 수행한 후 상기 전치 단계의 반복을 중지하는 전치 반복 단계를 포함하는 이미지 회전 방법.
- 제1항에 있어서,상기 연산 단계는,상기 로드 단계 이후에, 가장 선행하는 로드 메모리 벡터부터 각 로드 메모리 벡터를 바로 뒤에 후행하는 로드 메모리 벡터와 짝지어 각 짝지은 로드 메모리 벡터 서로간의 인터리빙 연산을 수행하는 인터리빙 단계; 및상기 인터리빙 단계 이후에, 가장 선행하는 로드 메모리 벡터부터 각 로드 메모리 벡터를 2k 만큼 후행하는 로드 메모리 벡터와 짝지어 각 짝지은 로드 메모리 벡터 사이에 대한 전치 연산을 수행하는 전치 단계를 반복하되, 상기 전치 단계의 반복 시에 상기 k는 최초에 1로 시작하여 상기 전치 단계의 반복 때마다 1씩 증가하며, k가 n-1인 전치 연산을 수행한 후 상기 전치 단계의 반복을 중지하는 전치 반복 단계를 포함하는 이미지 회전 방법.
- 제1항에 있어서,상기 연산 단계에서 단위 크기를 2n-1로 하여 전치 연산을 수행하는 것을 특징으로 하는 이미지 회전 방법.
- 제1항에 있어서,상기 연산 단계 이후, 또는 상기 로드 단계 및 상기 연산 단계 사이에, 상기 로드 메모리 벡터를 역순으로 저장하는 단계를 더 포함하는 이미지 회전 방법.
- 제1항에 있어서,각 메모리 벡터는 픽셀 데이터를 저장하는 메모리를 2n개 포함하는 벡터이고,메모리 원소가 메모리 벡터를 단위 크기 2i(i 는 0 이상 n미만의 정수)에 해당하는 크기 단위로 나눈 메모리의 집합이고, 상기 메모리 원소를 순서대로 두 개씩 짝지은 것을 메모리 원소 쌍이라고 할 때, 제1 전치 대상 메모리 벡터 및 제2 전치 대상 메모리 벡터의 전치 연산은, 상기 제1 전치 대상 메모리 벡터의 임의의 위치의 메모리 원소 쌍의 두 번째 메모리 원소와 상기 제2 전치 대상 메모리 벡터의 상기 임의의 위치와 대응되는 위치의 메모리 원소 쌍의 첫 번째 메모리 원소를 서로 바꾸어 저장하는 연산인 것을 특징으로 하는 이미지 회전 방법.
- 제7항에 있어서,제 1 인터리빙 대상 메모리 벡터 및 제2 인터리빙 대상 메모리 벡터의 인터리빙 연산은 상기 제1 인터리빙 대상 메모리 벡터의 각 메모리의 픽셀 데이터 뒤에 상기 제2 인터리빙 대상 메모리 벡터의 상응하는 위치의 각 메모리의 픽셀 데이터를 삽입하여 상기 제1 인터리빙 대상 메모리 벡터 및 상기 제2 인터리빙 대상 메모리 벡터에 저장하는 연산인 것을 특징으로 하는 이미지 회전 방법.
- 제8항에 있어서,상기 각 인터리빙 단계에서 이미 다른 로드 메모리 벡터와 짝지은 로드 메모리 벡터는 다시 다른 로드 메모리 벡터와 짝짓지 않으며,상기 전치 단계에서 이미 다른 로드 메모리 벡터와 짝지은 로드 메모리 벡터는 다시 다른 로드 메모리 벡터와 짝짓지 않는 것을 특징으로 하는 이미지 회전 방법.
- n이 2 이상의 자연수일 때 2n×2n 픽셀의 원본 이미지를 회전시키는 이미지 회전 장치에 있어서,상기 원본 이미지의 픽셀의 각 행을 저장하는 로드 메모리 벡터; 및상기 원본 이미지의 픽셀이 상기 로드 메모리 벡터에 저장된 뒤, 상기 로드 메모리 벡터를 서로 짝지어 각 짝지은 로드 메모리 벡터 사이에 대한 전치 (Transposition) 연산을 수행하는 전치 단계를 1회 이상 수행하고 상기 로드 메모리 벡터를 서로 짝지어 각 짝지은 로드 메모리 벡터 서로간의 인터리빙 (Interleaving) 연산을 수행하는 인터리빙 단계를 0회 이상 수행하되, 상기 전치 단계 및 인터리빙 단계는 도합 n회 수행하는 제어부를 포함하는 이미지 회전 장치.
- 제10항에 있어서,상기 제어부는,상기 원본 이미지의 픽셀이 상기 로드 메모리 벡터에 저장된 뒤, 가장 선행하는 로드 메모리 벡터부터 각 로드 메모리 벡터를 2n-2만큼 후행하는 로드 메모리 벡터와 짝지어 각 짝지은 로드 메모리 벡터 서로간의 인터리빙 연산을 수행하는 인터리빙 단계를 n-1회 반복하는 인터리빙 연산부; 및상기 인터리빙 연산부의 인터리빙 연산이 n-1회 반복된 이후에, 가장 선행하는 로드 메모리 벡터부터 각 로드 메모리 벡터를 2n-1만큼 후행하는 로드 메모리 벡터와 짝지어 각 짝지은 로드 메모리 벡터 사이에 대한 전치 연산을 수행하는 전치 연산부를 포함하는 이미지 회전 장치.
- 제10항에 있어서,상기 제어부는,상기 원본 이미지의 픽셀이 상기 로드 메모리 벡터에 저장된 뒤, 가장 선행하는 로드 메모리 벡터부터 각 로드 메모리 벡터를 2k 만큼 후행하는 로드 메모리 벡터와 짝지어 각 짝지은 로드 메모리 벡터 사이에 대한 전치 연산을 수행하는 전치 단계를 반복하되, 상기 전치 단계의 반복 시에 상기 k는 최초에 0으로 시작하여 상기 전치 단계의 반복 때마다 1씩 증가하며, k가 n-1인 전치 연산을 수행한 후 상기 전치 단계의 반복을 중지하는 전치 연산부를 포함하는 이미지 회전 장치.
- 제10항에 있어서,상기 제어부는,상기 원본 이미지의 픽셀이 상기 로드 메모리 벡터에 저장된 뒤, 가장 선행하는 로드 메모리 벡터부터 각 로드 메모리 벡터를 바로 뒤에 후행하는 로드 메모리 벡터와 짝지어 각 짝지은 로드 메모리 벡터 서로간의 인터리빙 연산을 수행하는 인터리빙 연산부; 및상기 인터리빙 단계 이후에, 가장 선행하는 로드 메모리 벡터부터 각 로드 메모리 벡터를 2k 만큼 후행하는 로드 메모리 벡터와 짝지어 각 짝지은 로드 메모리 벡터 사이에 대한 전치 연산을 수행하는 전치 단계를 반복하되, 상기 전치 단계의 반복 시에 상기 k는 최초에 1로 시작하여 상기 전치 단계의 반복 때마다 1씩 증가하며, k가 n-1인 전치 연산을 수행한 후 상기 전치 단계의 반복을 중지하는 전치 연산부를 포함하는 이미지 회전 장치.
- 제10항에 있어서,상기 제어부는 단위 크기를 2n-1로 하여 전치 연산을 수행하는 것을 특징으로 하는 이미지 회전 장치.
- 제10항에 있어서,상기 제어부의 전치 단계 및 인터리빙 단계 수행 이후, 또는 상기 원본 이미지의 픽셀의 각 행을 상기 로드 메모리 벡터에 저장한 후 상기 제어부의 전치 단계 및 인터리빙 단계가 수행되기 전에, 상기 로드 메모리 벡터를 역순으로 저장하는 것을 특징으로 하는 이미지 회전 장치.
- 제10항에 있어서,각 메모리 벡터는 픽셀 데이터를 저장하는 메모리를 2n개 포함하는 벡터이고,메모리 원소가 메모리 벡터를 단위 크기 2i(i 는 0 이상 n미만의 정수)에 해당하는 크기 단위로 나눈 메모리의 집합이고, 상기 메모리 원소를 순서대로 두 개씩 짝지은 것을 메모리 원소 쌍이라고 할 때, 제1 전치 대상 메모리 벡터 및 제2 전치 대상 메모리 벡터의 전치 연산은, 상기 제1 전치 대상 메모리 벡터의 임의의 위치의 메모리 원소 쌍의 두 번째 메모리 원소와 상기 제2 전치 대상 메모리 벡터의 상기 임의의 위치와 대응되는 위치의 메모리 원소 쌍의 첫 번째 메모리 원소를 서로 바꾸어 저장하는 연산인 것을 특징으로 하는 이미지 회전 장치.
- 제16항에 있어서,제 1 인터리빙 대상 메모리 벡터 및 제2 인터리빙 대상 메모리 벡터의 인터리빙 연산은 상기 제1 인터리빙 대상 메모리 벡터의 각 메모리의 픽셀 데이터 뒤에 상기 제2 인터리빙 대상 메모리 벡터의 상응하는 위치의 각 메모리의 픽셀 데이터를 삽입하여 상기 제1 인터리빙 대상 메모리 벡터 및 상기 제2 인터리빙 대상 메모리 벡터에 저장하는 연산인 것을 특징으로 하는 이미지 회전 장치.
- 제17항에 있어서,상기 제어부는,상기 각 인터리빙 단계에서 이미 다른 로드 메모리 벡터와 짝지은 로드 메모리 벡터는 다시 다른 로드 메모리 벡터와 짝짓지 않으며,상기 전치 단계에서 이미 다른 로드 메모리 벡터와 짝지은 로드 메모리 벡터는 다시 다른 로드 메모리 벡터와 짝짓지 않는 것을 특징으로 하는 이미지 회전 장치.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090095321A KR101680112B1 (ko) | 2009-10-07 | 2009-10-07 | 단일 명령 복수 데이터 처리를 이용한 이미지 회전 방법 |
US12/900,148 US8681165B2 (en) | 2009-10-07 | 2010-10-07 | Image rotation method and apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090095321A KR101680112B1 (ko) | 2009-10-07 | 2009-10-07 | 단일 명령 복수 데이터 처리를 이용한 이미지 회전 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20110037760A KR20110037760A (ko) | 2011-04-13 |
KR101680112B1 true KR101680112B1 (ko) | 2016-11-28 |
Family
ID=43822868
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020090095321A KR101680112B1 (ko) | 2009-10-07 | 2009-10-07 | 단일 명령 복수 데이터 처리를 이용한 이미지 회전 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8681165B2 (ko) |
KR (1) | KR101680112B1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019107708A1 (ko) * | 2017-11-28 | 2019-06-06 | 삼성전자 주식회사 | Simd 연산을 이용하여 이미지 데이터의 주파수 변환을 수행하는 전자 장치 및 전자 장치의 동작 방법 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7511722B1 (en) | 2004-08-27 | 2009-03-31 | Apple Inc. | Method and system for fast 90 degree rotation of arrays |
-
2009
- 2009-10-07 KR KR1020090095321A patent/KR101680112B1/ko active IP Right Grant
-
2010
- 2010-10-07 US US12/900,148 patent/US8681165B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7511722B1 (en) | 2004-08-27 | 2009-03-31 | Apple Inc. | Method and system for fast 90 degree rotation of arrays |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019107708A1 (ko) * | 2017-11-28 | 2019-06-06 | 삼성전자 주식회사 | Simd 연산을 이용하여 이미지 데이터의 주파수 변환을 수행하는 전자 장치 및 전자 장치의 동작 방법 |
Also Published As
Publication number | Publication date |
---|---|
US20110080428A1 (en) | 2011-04-07 |
US8681165B2 (en) | 2014-03-25 |
KR20110037760A (ko) | 2011-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0743592B1 (en) | Reorganising of data objects within a data string | |
US6173394B1 (en) | Instruction having bit field designating status bits protected from modification corresponding to arithmetic logic unit result | |
US6240437B1 (en) | Long instruction word controlling plural independent processor operations | |
US5822619A (en) | System and method for restructuring data strings | |
KR101118814B1 (ko) | 그래픽 시스템에서 변수들의 패킹 및 링킹을 위한 방식 | |
US5293607A (en) | Flexible N-way memory interleaving | |
KR102118836B1 (ko) | Simd 아키텍처에서 레인 셔플을 위한 셔플러 회로 | |
EP0619675B1 (en) | Colour image display system | |
US5870618A (en) | Processor and data processor | |
JP2011223633A (ja) | 高速フィルタ型のyuvからrgbへの変換 | |
CN114296798B (zh) | 向量移位方法、处理器及电子设备 | |
JP2901213B2 (ja) | カラー空間変換方法 | |
US5896307A (en) | Method for handling an underflow condition in a processor | |
US5905661A (en) | Method for handling an overflow condition in a processor | |
US6173305B1 (en) | Division by iteration employing subtraction and conditional source selection of a prior difference or a left shifted remainder | |
KR101680112B1 (ko) | 단일 명령 복수 데이터 처리를 이용한 이미지 회전 방법 | |
US20220197653A1 (en) | Processors, methods, systems, and instructions to select and store data elements from strided data element positions in a first dimension from three source two-dimensional arrays in a result two-dimensional array | |
US20070233767A1 (en) | Rotator/shifter arrangement | |
Blinn | Fugue for MMX [parallel programming] | |
US8139077B2 (en) | Enhanced alpha blending | |
US20060056738A1 (en) | Image processing method and device | |
KR20040048051A (ko) | 범위선택 가능한 어드레스 디코더와 이를 이용한 고속그래픽 처리용 프레임 메모리 장치 | |
US8296349B2 (en) | Discrete cosine (DCT) and inverse discrete cosine transform circuit (IDCT) that executes DCT/IDCT operations with bufferfly stages | |
Scarpino | Crunching Numbers with AVX and AVX2 | |
JPH07234948A (ja) | 画像処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E90F | Notification of reason for final refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |