KR101490153B1 - 멀티코어 프로세서를 사용하는 웨이블릿 변환 - Google Patents

멀티코어 프로세서를 사용하는 웨이블릿 변환 Download PDF

Info

Publication number
KR101490153B1
KR101490153B1 KR20137017215A KR20137017215A KR101490153B1 KR 101490153 B1 KR101490153 B1 KR 101490153B1 KR 20137017215 A KR20137017215 A KR 20137017215A KR 20137017215 A KR20137017215 A KR 20137017215A KR 101490153 B1 KR101490153 B1 KR 101490153B1
Authority
KR
South Korea
Prior art keywords
wavelet
low
dwt
partial product
wavelet coefficients
Prior art date
Application number
KR20137017215A
Other languages
English (en)
Other versions
KR20130106865A (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 엠.에스. 라마이아 스쿨 오브 어드밴스드 스터디스
Publication of KR20130106865A publication Critical patent/KR20130106865A/ko
Application granted granted Critical
Publication of KR101490153B1 publication Critical patent/KR101490153B1/ko

Links

Images

Classifications

    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Image Processing (AREA)
  • Complex Calculations (AREA)

Abstract

웨이블릿 기반 데이터 압축을 위한 방법은, 일련의 이산 웨이블릿 변환(DWT) 저역통과 및 고역통과 필터링 연산을 적용함으로써 웨이블릿 계수를 계산하는 것에 연관된 데이터를, 픽셀의 세트와 함께, 수신하는 단계 - 여기에서 다수의 필터링 연산은, 저역통과 필터링 연산 및 고역통과 필터링 연산 중 적어도 하나를 위해 공통 부분 곱을 식별하고, 웨이블릿 계수의 제1부를 낮은 크기 계수로서, 그리고 웨이블릿 계수의 제2부를 높은 크기 계수로서 분류하고, 높은 크기 웨이블릿 계수에 대한 공통 부분 곱을 제거하고, 낮은 크기 웨이블릿 계수에 대한 곱셈 연산을 쉬프트-및-가산 연산으로 대체하고, 공통 부분 곱을 제거함으로써 감소됨 - 및 남은 필터링 연산에 기초하여 DWT를 적용하는 단계를 포함한다.

Description

멀티코어 프로세서를 사용하는 웨이블릿 변환{WAVELET TRANSFORMATION USING MULTICORE PROCESSORS}
여기에서 달리 지적되지 않는다면, 본 섹션에서 설명되는 내용은 본 출원에서 청구범위에 대한 종래 기술이 아니며, 본 섹션에 포함함으로써 종래 기술로 인정되지 않는다.
멀티코어 프로세서는 복수의 프로세서 코어를 포함하는 집적 회로(IC)이다. 일반적으로, 코어는 중앙처리장치(CPU) 같은 처리 유닛이고 실행가능 모듈(명령어 또는 코드)을 처리하여 하나 이상의 요구되는 기능 또는 응용을 제공한다. 멀티코어 프로세서는 예컨대, 아날로그-디지털 컨버터(ADC), 센서-어레이 등과 같은 하나 이상의 외부 데이터 소스에 의해 생성되는 데이터를 종종 수용하고 처리할 필요가 있다. 프로세서로의 단순한 버스 기반 데이터 인터페이스는 다수의 소스로부터 데이터 수집을 수용하는 것이 가능하지 않을 수 있고, 그러한 데이터 수집이 실질적으로 병렬 방식에서 수행되어야 할 경우에 특히 그러하다. 멀티코어 프로세서는 실시간으로 데이터의 복수의 채널 상에서 신호 처리를 수행하는 것이 가능하다.
웨이블릿 변환(wavelet transformation)은 이미지 압축 시스템에서 통상적으로 사용된다. 웨이블릿 변환 기반 방식은, 아티팩트(artifact)를 차단하고 시간과 주파수 모두에서 증가된 시간적 및 공간적 해상도를 제공한다는 점에서 고속 퓨리에 변환(FFT) 또는 이산 코사인 변환(DCT)과 같은 다른 변환보다 더 좋은 성과를 내므로, 이미지 및 비디오 압축에서 인지도를 얻고 있다. 게다가, 상이한 플랫폼 전반에 걸친 멀티미디어 콘텐트의 더 높은 이동성에 대한 요구는, 공간적, 시간적 및 품질 영역에서의 높은 정도의 확장성을 강조한다. 웨이블릿은 이러한 목표를 달성하기에 매우 적절하다.
이하의 요약은 단순히 예시적인 것으로서 어떠한 방식으로든 제한적으로 의도된 것이 아니다. 이하의 상세한 설명과 도면을 참조함으로써, 상기 설명된 예시적인 양태들, 실시예들, 그리고 특징들에 더하여, 추가적인 양태들, 실시예들, 그리고 특징들 또한 명확해질 것이다. 본 개시는 일반적으로 웨이블릿 기반 데이터 압축에 관한 기술을 설명한다.
여기에서 기술되는 일부 예시적인 방법은 픽셀의 세트와 연관된 데이터를 수신하는 단계 및 일련의 이산 웨이블릿 변환(DWT; Discrete Wavelet Transform) 저역통과 및 고역통과 필터링 연산(low-pass and high-pass filtering operation)을 적용함으로써 웨이블릿 계수를 계산하는 단계를 포함한다. 계산 동안, 필러팅 연산의 수는 저역통과 필터링 연산 및 고역통과 필터링 연산 중 적어도 하나 이상에 대한 공통 부분 곱(common partial product)을 식별하고 공통 부분 곱을 제거함으로써 줄어든다. 이 방법은 남은 필터링 연산에 기초하여 DWT를 적용하는 것을 또한 포함할 수 있다.
여기에서 기술되는 다른 예시적인 방법은 픽셀의 세트와 연관된 데이터를 수신하는 단계, 일련의 저역통과 및 고역통과 필터링 연산에 의해 수행되는 이산 웨이블릿 변환(DWT)에 대해 멀티 코어 프로세서로 각각의 픽셀을 직렬 단어로(word-serially) 로딩하는 단계 및 남은 필터링 연산에 기초하여 DWT를 적용하는 단계를 포함할 수 있다. 계산 프로세스에서의 필터링 연산의 수는 저역통과 필터링 연산 및 고역통과 필터링 연산 중 적어도 하나에 대한 공통 부분 곱을 식별하고, 필터링 연산으로부터 기인한 웨이블릿 계수를 그들 각각의 크기에 기초하여 소팅(sorting)하고, 웨이블릿 계수의 제1 부분을 낮은 크기 계수로서 웨이블릿 계수의 제2 부분을 높은 크기 계수로서 분류하고, 높은 크기 웨이블릿 계수에 대한 공통 부분 곱을 제거하고 및/또는 낮은 크기 웨이블릿 계수에 대한 곱셈 연산을 쉬프트-및-가산(shift and add) 연산으로 대체함으로써 줄어들 수 있다.
적어도 일부 실시예에 따라 웨이블릿 기반 데이터 압축을 수행하기 위한 일부 예시적인 집적 회로(IC)는 픽셀의 세트와 연관된 데이터를 수신하고, 복수의 코어로 각각의 픽셀을 직렬 단어로 로딩하도록 적응되는 제1 NOC(Network-on-chip)를 포함할 수 있고, 복수의 코어 중 각각의 코어는 이산 웨이블릿 변환(DWT)을 수행하기 위해 고역통과 처리 소자 및 저역통과 처리 소자를 포함한다. 복수의 코어는 저역통과 필터링 연산 및 고역통과 필터링 연산 중 적어도 하나에 대한 공통 부분 곱을 식별할 수 있고, DWT를 수행함에 있어서 공통 부분 곱을 제거할 수 있다. IC는 복수의 코어로부터 직렬 단어 방식에서 각각의 변환된 값을 언로딩하도록 적응되는 제2 NOC를 또한 포함할 수 있다.
본 개시의 전술한 특징 및 다른 특징은 첨부 도면과 결합하여, 다음의 설명 및 첨부된 청구범위로부터 더욱 충분히 명백해질 것이다. 이들 도면은 본 개시에 따른 단지 몇 개의 실시예를 묘사할 뿐이고, 따라서, 본 개시의 범위를 제한하는 것으로 고려되어서는 안 될 것임을 이해하면서, 본 개시는 첨부 도면의 사용을 통해 더 구체적이고 상세하게 설명될 것이다.
도 1은 맬라트 처리(Mallat processing) 모듈에 대한 예시적인 래퍼(wrapper)에 대한 블록도를 도시하고,
도 2는 예시적인 맬라트 필터 뱅크를 도시하고,
도 3은 실시예에 따른 맬라트 웨이블릿 변환 회로에서의 제2 고역통과 계수(g2)에 대한 CSD(Canonical Signed Digit)에 대한 블록도를 도시하고,
도 4는 실시예에 따른 맬라트 웨이블릿 변환 회로에서의 제3 고역통과 계수(g3)에 대한 쉬프트-및-가산 연산에 대한 블록도를 도시하고,
도 5는 실시예에 따른 맬라트 웨이블릿 변환 회로에서의 제2 저역통과 계수(h2)에 대한 쉬프트-및-가산 연산에 대한 블록도를 도시하고,
도 6은 실시예에 따른 맬라트 웨이블릿 변환 회로에서의 제3 저역통과 계수(h3)에 대한 쉬프트-및-가산 연산에 대한 블록도를 도시하고,
도 7은 직렬-입력-병렬-출력(SIPO; Serial-In-Parallel-Out) -맬라트- 병렬-입력-직렬-출력(PISO; Parallel-In-Serial-Out) 래퍼의 동작 동안 예시적인 클록 사이클(clock cycle)을 도시하고,
도 8은 계수의 6-사이클 계산에 대한 맬라트 변환 회로의 저역통과 필터 단계의 예시적인 구조를 도시하고,
도 9는 계수의 6-사이클 계산에 대한 맬라트 변환 회로의 고역통과 필터 단계의 예시적인 구조를 도시하고,
도 10a 내지 10d는 일부 실시예에 따라 상승 에지(positive edge) 및 하강 에지(negative edge) 구성을 가지는 저역통과 및 고역통과 맬라트 변환 회로에 대한 예시적인 RAM(Random Access Memory) 구조를 도시하고,
도 11은 도 10의 RAM 구조의 저역통과 컴포넌트에 대한 예시적인 처리 소자를 도시하고,
도 12는 도 10의 RAM 구조의 고역통과 컴포넌트에 대한 예시적인 처리 소자를 도시하고,
도 13은 도 10의 각각의 처리 소자에 대한 저역통과 및 고역통과 맬라트 계수에 대한 예시적인 배열을 도시하고,
도 14는 다른 실시예에 따라 저역통과 및 고역통과 맬라트 변환 회로에 대한 또 다른 예시적인 RAM 구조를 도시하고,
도 15는 저역통과 맬라트 변환 회로에 대한 네트워크를 형성하는 예시적인 곱을 도시하고,
도 16은 고역통과 맬라트 변환 회로에 대한 네트워크를 형성하는 예시적인 곱을 도시하고,
도 17은 웨이블릿 변환을 위한 환경으로 사용될 수 있는 범용 컴퓨팅 장치를 도시하고,
도 18은 도 17에서의 컴퓨팅 장치(1700)와 같은 컴퓨팅 장치에 의해 수행될 수 있는 예시적인 방법을 도시하는 블록도이고,
도 19는 예시적인 컴퓨터 프로그램 제품의 블록도를 도시하고, 모두 여기에서 기술되는 적어도 일부 실시예에 따라 배열된다.
이하의 상세한 설명에서 본 개시의 일부를 이루는 첨부된 도면이 참조된다. 문맥에서 달리 지시하고 있지 않은 한, 일반적으로, 도면에서 유사한 부호는 유사한 컴포넌트를 나타낸다. 상세한 설명, 도면, 그리고 청구범위에 설명되는 예시적인 실시예는 제한적으로 여겨지지 않는다. 본 개시에서 제시되는 대상의 범위 또는 사상에서 벗어나지 않으면서도 다른 실시예가 이용되거나, 다른 변경이 이루어질 수 있다. 여기에서 일반적으로 설명되고, 도면에 도시되는 본 개시의 양태는 다양한 다른 구성으로 배열, 대체, 조합, 분리, 및 설계될 수 있음과 이 모두가 여기에서 명시적으로 고려됨이 기꺼이 이해될 것이다. 본 개시는 그 중에서도 웨이블릿 기반 데이터 압축, 특히 멀티코어 프로세서를 사용하는 웨이블릿 변환에 관련되는 방법, 기기, 시스템, 장치 및/또는 컴퓨터 프로그램 제품을 일반적으로 기술한다.
간략하게 기술해서, 여기에서 일반적으로 설명되는 기술은 공통 부분 곱의 식별 및 제거를 이용하는 필터링 연산의 감소, 곱셈 연산의 일부의 대체, 그리고 직렬 단어로 각각의 픽셀을 로딩하고 직렬 단어 방식으로 각각의 변환된 값을 언로딩하는 것을 허용하는 맬라트 프로세서 주위의 래퍼의 생성에 의한 멀티코어 프로세서 환경에서의 웨이블릿 변환의 강화에 관련된다.
도 1은 맬라트 처리 모듈에 대한 예시적인 래퍼에 대한 블록도를 도시한다. 비디오 및 오디오 신호는 작은 시간 간격 동안 통계상 정지된 행동을 가진다. 이러한 신호에 대해, 시간 윈도우를 통해 계산될 수 있는 변환 기술을 이용하여 이후 신호를 분석하는 것을 계속하도록 시간 윈도우를 앞으로 움직이는 것이 이치에 더욱 맞다. 신호의 이산 웨이블릿 변환(DWT)은 이산 시간-주파수 맵을 생성한다. DWT는 하이젠베르크 곱에 의해 결정되는 가장 우수한 국소화(localization)를 생성하기 위해 가우스 함수의 최적성 속성을 이용한다. DWT는 높은 주파수에 대한 짧은 샘플링 간격 및 낮은 주파수에 대한 더 긴 샘플링 간격을 가지는 광대역 및 협대역 신호에 대해 적응될 수 있다. DWT는 디지털 구현에 더욱 적적할 수 있는 연속 웨이블릿의 이산 버전이다. DWT는 Q 분포로써 표현되는, 또한 일정한 Q 분포로 지칭될 수 있는 자신의 대역폭과, 중앙 주파수 사이의 실질적으로 일정한 비율을 유지하는 주파수 분포에 의해 특징 지어진다. 종래의 웨이블릿 변환 회로는 높은 전력 소모를 또한 일으킬 수 있는 다수의 곱셈 및 가산 연산을 가지는 변환을 수행하도록 이용될 수 있다.
적어도 일부 실시예에 따라 멀티코어-디렉티드(multicore-directed) 웨이블릿 변환 처리는 연산의 수를 줄임으로써 그리고 많은 연산 결과를 위해 요구되는 스토리지를 줄임으로써 웨이블릿 기반 압축을 달성하는 것의 효율적인 방법을 제공하도록 적응될 수 있다. 이는 다음에는 보다 낮은 게이트 계산(count), 줄어든 메모리, 및/또는 종래의 웨이블릿 변환 방법에 비해 연산을 수행하는 데에 필요한 줄어든 전력 소모를 도출할 수 있다. 실시예는 멀티코어 프로세서 또는 FPGA(Field Programmable Gate Array)와 같은 특화된 집적 회로에서 구현될 수 있다.
전력/컴포넌트 감소 및 계산 가속은, 이미지 또는 비디오 중 어느 하나를 표현하는 픽셀의 그룹에 대해 한번 계산될 수 있는 공통 부분 곱의 식별, 최소 계수가 선택될 수 있는 쉬프트-및-가산 연산에 의해 낮은 크기 계수에 대한 곱셈의 대체, 및 각각의 픽셀의 직렬 단어로 로딩 및 직렬 단어 방식에서의 각각의 변환된 값의 언로딩을 용이하게 하도록 이용될 수 있는 맬라트 주위의 래퍼의 생성에 의해 달성될 수 있다.
일부 예시적인 구현예에 따르면, LPPF(Lowest Partial Product First)의 원리가 웨이블릿 계수들의 절대 크기 및 최대 계수와 먼저 계산된 부분 곱에 기초하여 웨이블릿 계수를 소팅하는 데에 사용될 수 있다. 이러한 접근법은 상대적으로 빠르게 곱의 최종 합산으로의 수렴을 가능하게 할 수 있다.
도면 부호 100은 여기에서 기술된 적어도 일부 실시예에 따라 배열된, 직렬 입력 병렬 출력(SIPO) 모듈(104) 및 병렬 입력 직렬 출력(PISO) 모듈(126, 124)을 가지는 예시적인 단일 단계 맬라트 프로세서(110)를 도시한 것이다. 예시적인 맬라트 프로세서(110)는 고역통과 필터(112), 저역통과 필터(114) 및 "2 배수" 데시메이션("by 2" decimation) 블록(116)을 포함한다. 선택적으로, SIPO 모듈(104), 분배 버스(106) 및 PISO 모듈(124, 126)을 포함하는 래퍼는 자신의 I/O 계산을 실질적으로 줄이는 맬라트 프로세서(110)의 일체로 형성된 부분일 수 있다. I/O 계산을 줄이는 것은 I/O를 토글링하는 것으로 인한 전력 손실을 줄이는 것의 추가적인 효과를 가진다. 직렬로 제공되는 입력(102)은 프로세서로 피드하기 위해 병렬로 전환될 수 있고, 프로세서의 병렬 출력은 직렬 출력(122)으로 다시 전환될 수 있다.
도면 부호 100에서의 예시적인 컴포넌트 및 구성은 단지 예시의 목적을 위한 것이고 실시예에 대한 제한을 구성하지 않는다. DWT 연산을 수행하기 위한 맬라트 프로세서 및 직렬/병렬 및 재 전환을 위한 래퍼는 많은 상이한 컴포넌트, 구성 및/또는 프로세서 유형을 사용하여 구현될 수 있다. 나아가, 일부 실시예에 따른 전형적인 프로세서는 종속 접속된(cascaded) 단계로서 구현될 수 있는 다수의 고역통과 필터 및/또는 다수의 저역통과 필터를 가질 수 있다.
도 2는 여기에서 기술된 적어도 일부 시시예에 따라 배열된 예시적인 맬라트 필터 뱅크를 도시한다. DWT는 이산 시간 영역 신호, n은 정수인 x(n)의 저역통과 및 고역통과 필터링의 연속하는 연산에 의해 계산될 수 있다. 이는 맬라트 알고리즘 또는 맬라트-트리 분해라고 불리운다. 저역통과 필터 연산(214)은 H(z)로 표시되고, 고역통과 필터 연산(212)은 G(z)로 표시된다. 맬러트 프로세서는 임의의 수의 필터링 단계를 이용하도록 구성될 수 있다. 도표(200) 내의 예시는 세 필터링 단계(210, 220 및 230)를 포함한다. 요약하면, DWT는 임의의 입력 시퀀스 X={X0, X1, X2, ... , XN -1}를 저역통과 하위 대역 a={a0, a1, ... , aN /2-1} 및 고역통과 하위 대역 d={d0, d1, ... , dN /2-1}으로 분해하고 이는 다음과 같이 표현된다.
Figure 112013059080123-pct00001
여기에서, k=0 내지 N/2-1이고, gi 및 hi는 각각 고역통과 및 저역통과 필터 계수이다. 일부 실시예에 따르면, 9-7 배직교 스플라인 필터(bi-orthogonal spline filter)가 맬라트 프로세서의 필터링 단계에서 사용될 수 있다. 9-7 배직교 스플라인 필터는 9개의 저역통과 필터 계수 {h-4, ... h-1, h0 -, h1, ... , h4} 및 7개의 고역통과 필터 계수 {g-2, g-1, g0 -, g1, ... , g4}를 포함한다.
저역통과 필터 계수는 예컨대, h- -i =h i 인 대칭이다. 고역통과 필터 계수는
Figure 112013059080123-pct00002
Figure 112013059080123-pct00003
에 의해 관련되고, 여기에서
Figure 112013059080123-pct00004
는 신호의 복원을 위해 사용될 수 있는 7개의 저역통과 필터 계수이다. 즉,
Figure 112013059080123-pct00005
이다.
두 필터 연산(212, 214)의 출력은 데시메이션 소자(216 및 218)를 통해 데시메이션될 수 있고, 계수를 형성하는 그 결과는 다음 단계로 전달될 수 있고, 처리는 프로세서의 모든 필터링 단계를 통해 계속된다. 데시메이션 소자는 제 때에 인자 2로써 데시메이션을 수행할 수 있다.
저역통과 하위 대역 샘플, n=0, 1, ..., N/2-1에 대한 an은 매트릭스 형태로 표현될 수 있다. 매트릭스는 매트릭스 식을 도출하는 (예시적인 8x8 구현에 대하여) 길이 8의 신호 벡터로 재배열될 수 있다.
Figure 112013059080123-pct00006
매트릭스 식은 다음과 같이 긴 형태로 쓰여질 수 있다.
Figure 112014068176131-pct00043
공통 항의 식별 후, 매트릭스 식은 다음과 같이 쓰여질 수 있다.
Figure 112014068176131-pct00044
맬라트 웨이블릿 변환의 계산을 위해 곱셈 연산의 전체 수를 계산하기 위해, 밴드되는 배직교 매트릭스는 합산 및 상이한 매트릭스로 쓰일 수 있다. 이러한 매트릭스는 이후 더 간소한 매트릭스의 합산으로 간소화될 수 있다. 임의의 최적화 없이 곱셈 연산의 최소한의 수는 열 1-5; 열 2-7; 열 3-8; 열 4-6; 열 4-4; 및 열 6-2(부동 소수점을 가지는 실수 곱셈)일 수 있다. 그러므로, 곱셈 연산의 전체 수는 32이다. 저역통과 필터에 대한 상기 식에서의 공통 인자의 제거를 수행하는 추가적인 단계를 사용하여 이는 간소화될 수 있다. 공통 인자는 다음과 같이 열거될 수 있다.
h4 * x6 - a1 and a5; h3 * x7 - a2 and a5; h1 * x1 - aO and a1; h1 * x3 - a1 and a2;
h1 * x7 - a3 and a4; h4 * x4 - aO and a4; h2 * x6 - a2 and a4; h1 * x5 - a2 and a3;
h3 * x5 - a1 and a4; h2 * x2 - aO and a2; h3 * x3 - aO and a3; h2 * x4 - a1 and a3.
공통 항이 제거되는 경우, 수행될 곱셈 연산의 수에서의 (예컨대, 32에서 20으로) 상당한 감소가 있을 수 있다. 곱셈에서의 감소는 임의의 추가적인 하드웨어 사이클 없이 연산 감소에 대응하고, 회로가 제거된 공통 항과 함께 구현될 수 있는, 예를 들어 VLSI 칩의 전력 예산에서의 감소에 대응한다.
연산은 저역통과 필터링에 대한 남은 곱셈-가산에 대해 더 감소될 수 있다. 12 번의 곱셈이 제거된 후, h2(제2 저역통과 필터 계수)는 4번의 곱셈을 필요로 하고 제3 저역통과 필터 계수 h3는 4번의 곱셈을 필요로 한다. h2 및 h3 사이에, h3는 최소 승수이다. 그러므로, h3는 최소 전체 근사 오차를 더할 가능성이 있을 것이다. 계수 h2 및 h3를 가지고 곱셈을 수행하는 것 대신, 쉬프트-및-가산 연산을 수행하면, h2에 대한 4번의 곱셈 연산이 제거될 수 있다. h3에 대한 추가적인 4번의 곱셈 연산 또한 제거될 수 있고, 그 결과 전체 8번의 추가적인 곱셈 연산 전부 제거된다. 이는 저역통과 연산에 대한 20-8=12번의 남은 곱셈 연산을 남긴다.
도 5 및 도 6은 여기에서 기술된 다양한 실시예에 따라 맬라트 웨이블릿 변환 회로에서의 제2 및 제3 저역통과 필터 계수(h2 및 h3)에 대한 쉬프트-및-가산 연산에 대한 블록도를 도시한다. 전술된 바와 같이, 두 곱셈을 가산 및 이동으로 대체하는 것의 결합된 효과는 4+4 = 8번의 곱셈 연산이 남은 20번의 곱셈 연산에서 제거된 점일 수 있다.
쉬프트-및-가산 기법은 20에서 8번의 곱셈 연산을 더 제거하는 데에 사용될 수 있다. 예를 들어, h2를 계산함에 있어 0.0782232 배의 임의의 곱셈은 0.078125 배의 연산으로 대체될 수 있다. 새로운 승수는 2의 승으로 구현될 수 있다. 곱셈 연산은 단순한 일련의 추가적인 연산 및 이동 연산으로 대체될 수 있다. 0.0625 + 0.015625 - 0.0001221 - 0.000061 + 0.000031 = 0.078217, 여기에서 목표 승수는 0.0782232이다. 그러므로, 7번의 가산 및 이동 연산은 하나의 부동 소수점 곱셈 연산을 대체할 수 있다. 도 5의 도표 500이 도시하는 바와 같이, 입력 레지스터(502)로부터의 값은, h2에 대한 결과 레지스터(518)에서 0.078217의 결과를 가지는 일련의 가산 및 이동(블록(504, 506, 508, 510, 512))이 뒤따르는, (2≫4 + 2≫6 - 2≫13 - 2≫14 + 2≫15) = 0.078217와 같은 CSD(Canonical Signed Digit) 연산에 대상이 될 수 있다.
도 6의 도표(600)는 제3 저역통과 필터 계수 h3과의 곱셈이 h3에 대한 결과 레지스터(618)에서의 결과 0.016860을 가지는 입력 레지스터(602)로부터의 값 상에서 (2≫6 + 2≫10 + 2≫12 + 2≫15) = 0.016860 (604,606,608,610)로서 가산 및 이동 연산의 조합에 의해 또한 어떻게 대체될 수 있는지를 도시한다. 그러므로, h2 및 h3에 대한 이동 및 가산 연산은 저역통과 필터 처리에서 각각 다른 4번의 곱셈 연산을 줄일 수 있다.
저역통과 연산에 유사하게, n = 0, 1, ... , N/2-1에 대한, 고역통과 하위 대역 샘플 dn은 매트릭스 형태로 표현될 수 있다. 매트릭스는 길이 8의 신호 벡터로 재배열되어 매트릭스 식(예컨대 8x8 구현)으로 된다.
Figure 112013059080123-pct00010
매트릭스 식은 긴 형태로는 다음과 같이 쓰여질 수 있다.
Figure 112014068176131-pct00045
Figure 112014068176131-pct00046
공통 항 식별 후, 매트릭스 식은 다음과 같이 쓰여질 수 있다.
Figure 112014068176131-pct00047
수학식 그룹[6]에서 고역통과 필터 계수에 대한 매트릭스 식은 웨이블릿 변환 결과를 형성하기 위해 27번의 곱셈을 요구한다. 상기 긴 형태 식에서 식별된 공통항으로부터, 뒤따르는 곱셈 연산은 제거될 수 있다 - g3x7-d5 및 d3; g4x6-d5 및 d2; g4x4-d4 및 dl; g3x5- d4 및 d2; g2x6- d4 및 d3; g2x0- d0 및 dl; g3xl d0 및 d2; g4x2- d0 및 d3; g3x3-dl 및 d3; g2x2 - dl 및 d2; g2x4-d2 및 d3. 그러므로, 6번의 곱셈 연산은 고역통과 하위 대역 샘플 d0, d1, d2, d3의 계산에서 절약될 수 있고, 5번의 연산은 d4 및 d5에서 절약될 수 있다. 공통 곱은 수학식 그룹[7]에서 도시된다.
맬라트 알고리즘을 사용한 고역통과 필터에 대하여 두 상이한 특징이 이용될 수 있고, 하나는 공통 항의 식별에 기초한 것이고, 다른 하나는 이동 및 가산 파이프라인 구조에 의해 곱셈 연산의 제거에 기초한 것이다. 최소 전력 손실을 달성하기 위하여, 두 접근은 일부 실시예에 따라 통합될 수 있다. 제1 접근은 공통 항을 제거하여 그리하여 11번의 과다한 곱셈 연산을 제거한다.
고역통과 맬라트 필터에 대한 곱셈 연산의 본래 수는 27 번이고, 11번의 곱셈 연산의 제거는 27-11 = 16번의 곱셈 연산을 남긴다. 11번의 연산이 제거된 후, 고역통과 필터 계수 g2에 대한 연산은 4번의 곱셈 연산을 포함하고, 고역통과 필터 계수 g3에 대하여 4번의 곱셈 연산을 포함한다. 둘 사이에서, g3는 최소 승수이고, 그러므로, 최소 전체 근사 오차를 더할 가능성이 있을 것이다. 그러므로, g3를 수반하는 연산은 먼저 최소 부분 곱을 먼저 계산하는 적어도 일부 실시예에 따라 먼저 수행될 수 있다. g2및 g3에 대한 곱셈 연산 대신 가산 및 이동 연산을 수행함으로써 추가적인 곱셈 연산이 또한 제거될 수 있다. g2에 대한 4번의 곱셈 연산에 대한 곱셈 가산을 이용하여, 이러한 4번은 제거될 수 있다. g3에 대한 추가적인 4번의 곱셈 연산이 아래 도 4에서 나타난 바와 같이 이동 및 가산 연산으로 곱셈 연산을 대체함으로써 제거될 수 있다. 그러므로 8번의 추가적인 곱셈 연산 전체는 고역통과 연산에 대해 16-8 = 8번의 곱셈 연산을 남기면서 제거될 수 있다.
도 3 및 도 4로 돌아와서, 도표(300 및 400)는 맬라트 웨이블릿 변환 회로에서 제2 및 제3 고역통과 필터 계수(g2 및 g3)에 대한 이동 및 가산 연산에 대한 흐름을 도시한다. 이동 및 가산 연산은 적어도 일부 실시예에 따라 8번의 곱셈 연산을 피하는 것을 돕는다.
예시적인 시나리오에 따라, g2에 대한 0.591271에 의한 임의의 곱셈은 0.591796875를 가지는 곱셈에 의해 대체될 수 있다. 새로운 승수는 2의 승으로 구현될 수 있다. 곱셈 연산은 목표 승수가 0.59127인, 0.5 + 0.0625 + 0.015625 + 0.007813 + 0.00390 + 0.00196 - 0.0001221 =0.5917과 같은 간단한 일련의 가산 및 이동으로 대체될 수 있다.
도 3의 도표(300)가 도시한 바와 같이, 일곱 번의 가산 및 이동은 g2에 대한 결과 레지스터(318)에서 결과 0.05917을 가지는 입력 레지스터(302)로부터의 값 상에서 하나의 부동 소수점 곱셈 (2≫ 1 + 2≫ 4 + 2≫6 + 2≫7 + 2≫8 + 2≫9 - 2≫ 13) = 0.5917 (304, 306, 308, 310, 312, 314, 316)을 대체할 수 있다. 도 4의 도표(400)는 제3 고역통과 필터 계수 g3와의 곱셈이 g3에 대한 결과 레지스터(418)에서의 결과 0.0576172를 가지는 0.0576172 = 0.062500 - 0.007813 + 0.0039063 -0.0009766 (2 4 - 2≫7 + 2≫8 - 2≫10) = 0.0576 (404,406,408, 410)로서의 가산 및 이동 연산의 결합에 의해 또한 어떻게 대체될 수 있는지 도시한다. 그러므로, g2 및 g3에 대한 이동 및 가산 연산은 고역통과 필터 처리에서, 다른 4번의 곱셈 연산 각각을 줄일 수 있다. 이는 웨이블렛 프로세서의 소비되는 회로 전력에서의 절약을 또한 제공한다.
오차 크기는 g2 및 g3와의 곱셈에 대하여 실질적으로 작게될 수 있다. 이러한 작은 오차는 g2 및 g3와의 이러한 곱셈 연산을 도 3 및 4에서 도시되는 이동 및 가산 연산으로 대체함으로써 전력이 절약되는 것을 함축한다.
도 7은 직렬-입력-병렬-출력(SIPO)-맬라트-병렬-입력-직렬-출력(PISO)래퍼의 연산 동안 도표(700)에서 예시적인 클록 사이클을 도시한다.
도 1과 함께 기술된, SIPO-맬라트-PISO 래퍼를 제어하기 위한 외부 신호는 로드 신호, 처리 신호 및 언로드 신호를 포함할 수 있다. 제1 상태(702) 동안, 로드 데이터 스트림, Xn(0-7)은 8번의 로드 사이틀 동안 수신될 수 있다. 이는 여덟 번의 외부 클럭 사이클일 수 있다. 로드 데이터 스트림이 수신되는 동시에 먼저 처리된 신호에 대한 언로드 데이터 스트림 Yn -1(0-7)이 언로드될 수 있다. 그러한 래퍼는 웨이블릿 프로세서가 FPGA 또는 소프트 또는 하드 IP에서 구현되는 경우에 I/O 계산을 줄인다.
제2 상태(704) 동안, 하나 또 두 클록 사이클을 취할 수 있는, 처리 데이터 스트림 Xn(0-7)이 처리될 수 있다. 처리된 데이터 스트림 Xn(0-7)과 연관된 언로드 데이터 스트림 Yn(0-7)이 예시적인 실시예에 따라 지속적인 약 여덟 번의 외부 클록 사이틀에서 언로드될 수 있는 동안, 제2 상태(704)에 제3 상태(706)가 뒤따를 수 있다. 동시에, 다음 로드 데이터 스트림 Xn +1(0-7)이 수신될 수 있다.
도 8은 계수의 6-사이클 계산에 대한 맬라트 변환 회로의 저역통과 필터 단계의 예시적인 구조를 도시한다.
도표(800)에 도시된 구조는 홀짝 입력 샘플(X1, X3, X5 등 및 X0, X2, X4, 등)으로서 분리된 입력 샘플을 도시한다. 홀수의 샘플은 저역통과 필터 계수 h0, h2, 및 h4 계산에 대한 상부 처리 소자(802, 804 및 806)로 제공된다. 짝수의 샘플은 지연 소자(808) 후에 저역통과 필터 계수 h1 및 h3에 대한 하부의 두 처리 소자(810 및 812)로 제공된다. 저역통과 필터링을 위한 각각의 처리 소자에서의 계산 처리의 더 상세한 관점은 도 15와 함께 아래에 도시된다.
도 9는 계수의 6-사이클 계산을 위한 맬라트 변환 회로의 고역통과 필터 단계의 예시적인 구조를 도시한다.
도표(900)에 도시된 구조는 홀짝 입력 샘플(X1, X3, X5 등 및 X0, X2, X4 등)로서 또한 분리된 고역통과 연산에 대한 입력 샘플을 도시한다. 홀수 샘플은 고역통과 필터 계수 g2 및 g4 계산에 대한 상부 처리 소자(902 및 904)로 제공된다. 짝수의 샘플은 지연 소자(906) 후에 고역통과 필터 계수 g1 및 g3에 대한 하부의 두 처리 소자(908 및 910)로 제공된다. 고역통과 필터링을 위한 각각의 처리 소자에서의 계산 처리의 더 상세한 관점은 도 16과 함께 아래에서 도시된다.
도 10a부터 10d는 일부 실시예에 따라 상승 에지 및 하강 에지 구성를 가지는 저역통과 및 고역통과 맬라트 변환 회로에 대한 예시적인 RAM(Random Access Memory) 구조를 도시한다.
DWT를 수행하기 위한 도표(1000A)에서 도시된 구조는 두 데이터 스토리지 소자(예컨대, RAMs(1002 및 1008))의 구성을 이용할 수 있다. 이러한 배열은 두 상이한 데이터 스트림이 하나의 반복으로부터 다른 것으로의 (RAMs(1002 및 1008) 사이에서) 방향에서의 데이터 흐름 교차를 가지는 웨이블릿 변환을 경험하도록 허용한다. 일부 실시예에 따르면, 배직교 9:7 스플라인 필터가 사용될 수 있다. 결과 모델은 도표(1000a)에서 도시된 캐시를 가지는 m개의 코어의 배열로 매핑될 수 있다. DWT를 위한 제1 구조 또는 저역통과 구조는 다음의 식으로 표현될 수 있다.
Figure 112013059080123-pct00014
Figure 112013059080123-pct00015
짝홀 샘플은 각각의 반복에서 교차 방식에서 RAM(1002, 1008)으로부터 처리 소자(1010)의 배열로 피드될 수 있고, 여기에서 하나의 RAM은 홀수 사이클에서 사용되며, 다른 RAM은 짝수 사이클에서 사용된다. 두 RAM은 캐싱 연산을 위해 배열된 RAM의 그룹을 각각 피드하는 복수의 원형 버퍼(미도시) 및 다수의 도착 채널의 구조로부터 입력 데이터를 제공받을 수 있다. 각각의 프로세서 코어는 둘 이상의 RAM(예컨대, 1002, 1008)을 제공할 수 있다. 맬라트의 하나의 단계에 대해, 동일한 코어가 다수의 앞서고 뒤선 단계에서 사용될 수 있다. 하나의 예시적인 앞선 단계는 맬라트 고역통과 필터, 저역통과 필터 및 데시메이션 연산을 통하는 하나의 관통을 구성할 수 있다. N=8(8개의 입력 샘플)의 예시적인 경우에서, DWT의 저역통과 구조에 대한 식은 다음과 같이 확장될 수 있다.
Figure 112013059080123-pct00016
고역통과 웨이블릿 필터는 수학식 그룹[10]처럼 상기된 여덟 개의 식의 형태에서 쓰일 수 있다. 항 hi의 각각에 대한 인덱스 i는 상이한 시간으로 정의되고, 여기에서 hi와 hi -1 사이의 상대적인 시간 지연은 지연 소자에 의해 제공될 수 있다. 예를 들어, 항 h0 내지 h7 사이의 시간 지연은 지연 라인(1004(상승 에지) 및 1006(하강 에지))에 의해 제공될 수 있다. 두 지연 라인은 두 상이한 RAM에 의해 동시에 피드된다. 예를 들어, 항 h1은 2 시간 지연에 대응할 수 있고, 항 h2는 4 시간 지연에 대응할 수 있고, 항 h3은 6 지연에 대응할 수 있고, 그리고 항 h4는 8 시간 지연에 대응할 수 있다. 그 결과, 8번째 지연된 항은 h4 블록으로의 입력에 대응할 수 있고 6번째 지연된 항은 h3 블록으로의 입력에 대응할 수 있다.
고역통과 맬라트 필터에 대한 수학식은 또한 다음과 같이 표현될 수 있다.
Figure 112013059080123-pct00017
a0 계수의 대칭성은 아래의 구조를 생성하기 위해 역류 원칙에서 사용될 수 있다. 고역통과 및 저역통과 하위 대역 샘플 a0 및 c0의 수학식[10] 및 [11]의 검토는 계수가 변하지 않는 표준 수축 구조(standard systolic structure)와는 다르게 입력 샘플은 왼쪽에서 오른쪽으로 이동되고, 출력 샘플은 오른쪽에서 왼쪽으로 이동되는 것을 밝힌다. 수학식의 수는, 계수 및 결과가 이동되고 샘플이 모두 동시에 로드되면 간소화된다. 이러한 속성은 저역통과 필터 계수를 다음과 같이 씀에 있어서 유리할 수 있다.
Figure 112014068176131-pct00048
Figure 112014068176131-pct00049
설계는 두 RAM(1002, 1008)을 사용하며, 왼쪽 RAM은 입력 샘플을 유지하도록 구성될 수 있다. 맬라트 저역통과 수학식의 확장된 형태는 이후 다음과 같은 패턴을 따를 수 있다.
Figure 112014068176131-pct00050
수학식 그룹[14]의 위의 패턴은 두 RAM에 접근할 수 있는 구조를 가지고 구현될 수 있다. 데이터 워드의 하나의 그룹은 제1 웨이블릿 출력 a0가 제1 클록 사이클에서 그리고 그 후 모든 제2 클록 사이클에서 쓰이도록 처리될 수 있다.
처리 소자(1010)로부터의 저역통과/고역통과 연산의 출력은 5-입력 트리 가산기(1012) 및 4-입력 트리 가산기(1014)로 결합될 수 있다. 상승 에지(1012)에서 이용 가능한 출력을 위한 하나의 가산기 및 하강 에지(1014)에서 이용 가능한 소자 출력 처리를 처리하기 위한 다른 가산기를 사용함으로써, 데이터가 이용가능한 비율은 효과적으로 두배가 될 수 있다. 출력 데이터는 일부 실시예에 따라 외부 출력 버퍼에 쓰일 수 있거나 또는 다른 실시예에 따른 (입력 RAM과는 상이한) 다른 RAM에 쓰일 수 있다.
도표(1000a 내지 1000d)는 하나는 상승 클록 에지에서 작동되고, 다른 라인은 하강 클록 에지에서 작동되는 두 지연 라인을 피드하는 듀얼 RAM(1002 및 1008)을 도시한다. 도표(1000a, 1000b, 1000c, 1000d)에서의 지연 라인, RAM, 처리 소자의 상세한 연결은 저역통과 상승 에지, 저역통과 하강 에지, 고역통과 상승 에지, 고역통과 하강 에지 구성, 각각에 대응한다. PE1 내지 PE5(1010) 처리 소자는, 그들이 도 11 및 12와 함께 아래에서 논의된 바와 같이 두 독립적인 곱셈-가산 파이프라인을 가지고 그 중 하나는 상승 에지에서 수행하고, 다른 하나는 하강 에지 상에서 수행함에 따라, 두 상승 및 하강 에지 상에서 그들의 연산을 작동한다.
도 11은 적어도 일부 실시예에 따 도 10의 RAM 구조의 저역통과 컴포넌트를 위한 예시적인 처리 소자를 도시한다.
상기 도시된 예시적인 수축 배열(systolic array)에서, 각각의 처리 소자는 네 개의 2-단계 파이프라인을 포함할 수 있다. 네 개의 파이프라인 중, 둘은 저역통과 계수 계산 연산에 전용될 수 있고, 다른 둘은 고역통과 계수 계산 연산에 전용될 수 있다. 도표(1100)는, 입력 값이 버퍼될 수 있고(1102), 가산 및 이동 연산(1104) 및 곱셈 연산(1106)에 대상이 될 수 있는, 저역통과 계수 계산에 전용되는 예시적인 두 단계를 도시한다. 출력 버퍼 (또는 레지스터) 단계(1108)는 대응하는 가산기에 출력(Z_p 및 Z_n)을 제공하도록 구성될 수 있다.
저역통과 계산을 위한 두 파이프라인은 병행 연산을 위해 적응될 수 있고, 왼편 파이프라인은 클록 신호의 상승 에지에서 선택적으로 결합되며, 오른편 파이프라인은 클록 신호의 하강 에지에서 선택적으로 결합된다.
도 12는 도 10의 RAM 구조의 고역통과 컴포넌트를 위한 예시적인 처리 소자를 도시한다. 도표(1200)는 도 11의 파이프라인과 유사한 고역통과 계수 계산 연산에 전용되는 예시적인 두 단계를 도시한다. 입력 값은 버퍼될 수 있고(1202), 가산 및 이동 연산(1204) 및 곱셈 연산(1206)에 대상이 될 수 있다. 출력 버퍼 (또는 레지스터) 단계(1208)는 대응하는 고역통과 출력 가산기로 출력(W_p 및 W_n)을 제공하도록 구성될 수 있다.
고역통과 계산을 위한 두 파이프라인은 병행 연산을 위해 또한 적응될 수 있고, 왼편 파이프라인은 클록 신호의 상승 에지에서 선택적으로 결합되고, 오른편 파이프라인은 클록 신호의 하강 에지에서 선택적으로 결합된다.
도표(1200)에서의 출력 W_p 및 W_n은 그들이 4-입력 가산기에서 가산되기 전의 고역통과 필터 계수의 컴포넌트를 나타낸다. 도 11의 도표(1100)에서의 출력 Z_p 및 Z_n은 그들이 5-입력 가산기에서 가산되기 전의 저역통과 필터 계수를 나타낸다. 일부 실시예에 따르면 W_p는 클록의 상승 에지 상에서 오직 작동하고, 도 10a 내지 10d의 RAM(1002) 왼편에서 유래한 데이터를 위한 맬라트 계수를 형성하는 4-입력 가산기로 보내진다. W_n은 도 10d에서의 하강 에지 상에서 수행하는 가산기로 보내진다. 각각의 처리 소자는 4 출력 포트, 즉 저역통과 필터 계수(상승 에지 및 하강 에지)를 위해 2 출력 포트 및 고역통과 필터 계수(상승 에지 및 하강 에지)를 위해 2 출력 포트를 가진다. 가산기의 출력은 도 1에서 도시되는 데시메이터의 두 세트로 보내질 수 있다. 데시메이터의 하나의 세트(상승 에지 및 하강 에지)는 저역통과 필터 계수를 위한 것이고, 데시메이터의 다른 세트(상승 에지 및 하강 에지)는 고역통과 필터 계수를 위한 것이다.
도 13은 도 10의 각각의 처리 소자를 위한 저역통과 및 고역통과 맬라트 계수를 위한 예시적인 배열을 도시한다.
도표(1300)에서의 각각의 처리 소자(PE)(1010)는 파이프라인의 두 세트에서 동시에 입력 값 Xi를 수신하고 처리하도록 구성될 수 있고, 하나의 파이프라인은 저역통과 필터 연산을 위한 것이고, 하나의 파이프라인은 고역통과 필터 연산을 위한 것이다. 출력 데이터는 트리 가산기를 통해 처리될 수 있고, 출력 버퍼 또는 RAM에서 저장될 수 있다. 출력 데이터 비율은 클록 신호 처리의 상승 및 하강 에지를 사용함으로써 효과적으로 두 배일 수 있다.
일부 실시예에 따르면, 제1 데이터 스트림은 제1 버퍼(또는 램)로부터 모든 클록 사이클의 상승 에지에서 처리 소자(1010)에 의해 수신될 수 있다. 제2 데이터 스트림은 듀얼 배열 처리 소자가 채워지는 비율을 배가하는 모든 클록 사이클의 하강 에지에서 제2 버퍼 또는 RAM으로부터 수신될 수 있다. 각각의 처리 소자의 파이프라인(1100 및 1120)은 각각의 대응하는 클록 에지에서 처리되는 데이터 스트림이 상이하도록 클록 사이클의 상승 에지 및 하강 에지 둘에서 작동하도록 구성될 수 있다. 두 에지에서의 연산으로 인해, 내부-샘플 지연은 효과적으로 반이 될 수 있다. PE 소자(1010)는 두 지연 라인에 의해 피드되므로 그들은 4 입력 포트를 가지며 한 쌍은 상승 클록 에지에 대응하고, 다른 한 쌍은 하강 클록 에지에 대응한다. 각각의 PE 소자는 저역통과 및 고역통과 신호의 각각의 상승 에지에 대해 하나, 하강 에지에 대해 하나인 네 개의 출력을 가진다. 저역통과 필터링을 위한 상승 에지 합산은 5개의 PE를 요구하고 고역통과 필터링을 위한 상승 에지 합산은 4개의 PE를 요구한다.
도 14는 다른 실시예에 따라 저역통과 및 고역통과 맬라트 변환 회로를 위한 다른 예시적인 RAM 구조를 도시한다. 도표(1400)는 도 10a 내지 10d의 구성의 더 추상적인 관점이다. 두 RAM(1002 및 1008)은 두 지연 라인에 아주 가까이에 위치된다. ((1004)처럼 도 10a 내지 10d 내에 또한 나타난) 지연 라인(1402) 중 하나는 오직 상승 클록 에지에서만 이동을 수행한다. ((1006)처럼 도 10a 내지 10d 내에 또한 나타난) 제2 지연 라인(1404)은 하강 클록 에지 상에서 이동을 수행한다. 5개의 처리 소자(1010)(PE1 내지 PE5)는 두 지연 라인(1402 및 1404)에 의해 피드된다. PE 소자(1010)는 저역통과 필터 계수를 위한 두 5-입력 가산기 및 고역통과 필터 계수를 위한 두 4-입력 가산기를 피드한다. 두 RAM(1002 및 1008)은 삼차원의 집적 회로에서의 지연 라인 및 처리 소자로서 동일한 실리콘어 층 상에 위치될 수 있다. 그들은 삼차원의 집적 회로의 지연 라인 및 처리 소자에 대해 상이한 실리콘의 층 상에 또한 위치될 수 있다.
도표(1400)는 두 RAM(1002 및 1008), 다섯 개의 처리 소자(1010), 각각 여덟 지연을 가지는 지연 라인(1402 및 1404), 두 세트의 가산기(1406, 1408, 1410 및 1412)의 다른 배열을 도시한다. 지연 라인은 클록 신호(1402)의 상승 에지 또는 클록 신호(1404)의 하강 에지 중 어느 하나에서 입력과 함께 연산을 위해 전용될 수 있다. 유사하게, 가산기는 클록 신호의 상승 에지 또는 하강 에지 중 어느 하나와 함께 연산을 위해 또한 전용될 수 이다. 예를 들어, 저역통과 하위 대역 샘플 출력에 대한 하나의 5-입력 가산기(1406)는 클록 신호의 상승 에지 상에서 연산을 위해 구성될 수 있고, 저역통과 하위 대역 샘플 출력에 대한 다른 5-입력 가산기(1408)는 클록 신호의 하강 에지 상에서 연산을 위해 구성될 수 있으며, 고역통과 하위 대역 샘플 출력에 대한 하나의 4-입력 가산기(1410)는 신호의 상승 에지 상에서 연산을 위해 구성될 수 있고, 고위 대역 하위 대역 샘플 출력에 대한 하나의 4-입력 가산기(1412)는 신호의 하강 에지 상에서 연산을 위해 구성될 수 있다.
가산기(1406, 1408, 1410, 1412)의 출력에서, 하위 대역 샘플의 네 개의 독립적인 세트가 이용 가능하다. 저역통과 하위 대역 샘플은 상승 클록 에지 a0p, a1p, a2p, ...를 가지고 출력된다. 저역통과 하위 대역 샘플은 하강 클록 에지 a0n, a1n, a2n, ...을 가지고 출력된다. 고역통과 하위 대역 샘플은 상승 클록 에지 c0p, c1p, c2p, ...를 가지고 출력된다. 고역통과 하위 대역 샘플은 하강 클록 에지 c0n, c1n, c2n, ...을 가지고 출력된다. 일부 실시예에 따르면, 5개의 입력 및 4개의 입력 가산기는 연산에서 지연을 최소로 하기 위해 트리 가산기로서 작동하도록 구성될 수 있다.
도 15는 저역통과 맬라트 변환 회로를 위해 네트워크를 형성하는 예시적인 제품을 도시한다. 도 8과 함께 상기된 바와 같이, 입력 샘플은 홀수 샘플 및 짝수 샘플의 그룹으로 분할될 수 있다. 홀수 샘플은 홀수 저역통과 계수 계산 연산으로서 처리될 수 있는 한편, 짝수 샘플은 짝수 저역통과 계수 계산 연산으로서 처리될 수 있다.
도표(1500)에서 도시된 바와 같이, 저역통과 필터 계수 h1, h0 및 h4는 (공통 부분 적 제거를 통해 줄일 수 있는) 정규 부호 곱셈(1502, 1504, 1506)과 함께 이용된다. 일부 실시예에 따른 제2의 연산-감소 접근에 따라, 하위 대역 샘플은 요구되는 하드웨어, 계산 시간 및 컴포넌트를 위한 전력을 더 줄이는, 곱셈 대신 입력으로서 저역통과 필터 계수 h2 및 h3를 가지는 쉬프트-및-가산(S&A) 연산(1508, 1510)을 통해 또한 계산될 수 있다.
도 16은 고역통과 맬라트 변환 회로를 위해 네트워크를 형성하는 예시적인 제품을 도시한다. 입력 샘플 x1 - x7은 고역통과 연산에서 홀수 샘플 및 짝수 샘플 사이에서 또한 나누어질 수 있다. 홀수 샘플은 홀수 고역통과 필터 계수 g1 및 g3를 가지는 하위 대역 샘플 계산(d0 - d5)에서 사용될 수 있는 한편, 짝수 샘플은 짝수 고역통과 필터 계수 g2 및 g4를 가지는 하위 대역 샘플 계산에서 사용될 수 있다.
도표(1600)에 도시된 바와 같이, (공통 부분 곱 제거를 통해 줄일 수 있는) 고역통과 필터 계수 g1 및 g4는 정규 부호 곱셈(1602 및 1604)을 포함한다. 일부 실시예에 따른 제2 연산-감소 접근에 따라, 고역통과 필터 계수 g2 및 g3는 쉬프트-및-가산 연산(1606 및 1608)을 통해 또한 계산될 수 있고, 이는 곱셈과는 반대로 요구되는 하드웨어, 계산 시간 및 컴포넌트를 위한 전력을 더 줄인다.
도 17은 범용 컴퓨팅 장치를 도시하고, 이는 본 개시의 적어도 일부 실시예에 따라 배열된 웨이블릿 변환을 위한 계산 환경으로 사용될 수 있다.
컴퓨터(1700)는 프로세서(1710), 메모리(1720) 및 하나 이상의 드라이브(1730)를 포함한다. 드라이브(1730) 및 분리형 스토리지 매체(1734)(예컨대, CD-ROM, DVD-ROM) 및 비분리형 매체(1732)(예컨대, 하드 드라이브 디스크)와 같은 그들의 연관된 컴퓨터 스토리지 매체는 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈 및 컴퓨터(1700)를 위한 다른 데이터의 스토리지를 제공할 수 있다. 드라이브(1730)는 운영 체제(1740), 애플리케이션 프로그램(1750), 프로그램 모듈(1760) 및 데이터베이스(1780)를 포함할 수 있다. 컴퓨터(1700)는 사용자가 명령어 및 데이터를 입력할 수 있는 입력 장치(1790)를 사용할 수 있다. 입력 장치(1790)는 전자 디지타이저, 마이크로폰(1796), 키보드(1794) 및 마우스 장치(1792), 트랙볼 장치 또는 터치 패드 장치와 같은 포인팅 장치를 포함할 수 있다. 다른 입력 장치는 조이스틱 장치, 게임 패드 장치, 위성 접시, 스캐너 장치 등을 포함할 수 있다.
애플리케이션 프로그램(1750)은 픽셀의 세트와 연관된 데이터를 수신할 수 있고 처리할 수 있다. 애플리케이션 프로그램(1750) 내의 맬라트 처리 모듈(1752)은 일련의 이산 웨이블릿 변환(DWT) 저역통과 및 고역통과 필터링 연산을 적용시킴으로써 웨이블릿 계수를 계산할 수 있고, 저역통과 필터링 연산 및 고역통과 필터링 연산 중 하나 이상에 대한 공통 부분 곱을 식별하고, 공통 부분 곱을 제거함으로써 많은 필터링 연산을 줄일 수 있다. DWT는 이후 남은 필터링 연산에 기초하여 적용될 수 있다.
상기된 입력 장치 및 다른 입력 장치들은 시스템 버스(1705)에 결합된 사용자 입력 인터페이스를 통해 프로세서(1710)에 결합될 수 있지만 병렬 포트, 게임 포드 또는 USB(universal serial bus)와 같은 버스 구조 및 다른 인터페이스에 의해 결합될 수 있다. 컴퓨터(1700)와 같은 컴퓨터는 출력 주변 인터페이스(1770) 등을 통해 결합될 수 있는 스피커(1776), 프린터(1774) 및 디스플레이(1772)와 같은 다른 주변 출력 장치를 또한 포함할 수 있다.
메모리(1700), 분리형 저장 장치(1734) 및 비분리형 저장 장치(1732)는 컴퓨터 스토리지 매체의 예시이다. 컴퓨터 스토리지 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 다른 광 스토리지, 자기 카세트, 자기 테이프, 자기 디스크 스토리지 또는 다른 자기 스토리지 장치, 또는 요구되는 정보를 저장하는 데에 사용될 수 있고, 컴퓨터(1700)에 의해 접근될 수 있는 임의의 다른 매체를 포함하나 이에 제한되는 것은 아니다. 임의의 그러한 컴퓨터 스토리지 매체는 컴퓨터(1700)의 일부일 수 있다.
컴퓨터(1700)는 네트워크 인터페이스(1706)에 연결된 원격 컴퓨터와 같은, 하나 이상의 컴퓨터로의 로직 연결을 이용하는 네트워크된 환경에서 작동할 수 있다. 원격 컴퓨터는 개인 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 다른 공용 네트워크 노드일 수 있고, 컴퓨터(1700)에 관한 상기 소자 중 많은 것 또는 전부를 포함할 수 있다. 네트워킹 환경은 사무소의 다반사, WAN(enterprise-wide area network), LAN(local area network), 인트라넷 및 인터넷과 같은 세계적 네트워크이다. 예를 들어, 본 출원의 대상에서 컴퓨터(1700)는 데이터가 자동화 드릴 시스템, 에칭 시스템과 같은 다중층 회로 기판 제조 시스템으로 이동하는 제어기 기계를 포함할 수 있고, 원격 컴퓨터는 시스템의 제어기를 포함할 수 있다. 그러나, 소스 및 목적지 기계는 네트워크(1708) 또는 다른 매체에 의해 함께 결합될 필요는 없고, 대신 데이터가 소스 플랫폼에 의해 쓰여지고 목적지 플랫폼 또는 플랫폼들에 의해 읽혀질 수 있는 임의의 매체를 통해 이동될 수 있음이 주목되어야 한다. LAN 또는 WLAN 네트워킹 환경에서 사용되는 경우, 컴퓨터(1700)는 네트워크 인터페이스(1706) 또는 어댑터를 통해 LAN에 결합될 수 있다.
네트워크는 서버, 클라이언트, 스위치, 라우터, 모뎀, ISP(internet service provider) 및 임의의 적절한 통신 매체(예컨대, 유선 또는 무선 통신)을 이용하는 임의의 논리적 배치(topology)를 포함할 수 있다. 일부 실시예에 따르는 시스템은 정적 또는 동적 네트워크 논리적 배치를 가질 수 있다. 네트워크는 기업 네트워크(예컨대, LAN, WAN 또는 WLAN)와 같은 보안 네트워크, 무선 오픈 네트워크(예컨대, IEEE 802.11 무선 네트워크)와 같은 비보안 네트워크, 또는 예컨대 인터넷과 같은 세계적 네트워크를 포함할 수 있다. 네트워크는 함께 작동하도록 적응된 복수의 특정 네트워크를 또한 포함할 수 있다. 네트워크는 여기에서 기술된 노드 사이에서 통신을 제공하도록 적응된다. 제한이 아닌 예시로써, 네트워크는 어쿠스틱, RF, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함할 수 있다.
네트워크 통신 링크는 통신 매체의 일 예시일 수 있다. 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 반송파 또는 다른 전송 메커니즘 같은 변조된 데이터 신호 내의 다른 데이터에 의해 구현될 수 있고, 임의의 정보 전달 매체를 포함할 수 있다. "변조된 데이터 신호"는 신호 내에 정보를 인코딩하기 위한 방식으로 설정되거나 변경된 특성 중 하나 이상을 갖는 신호일 수 있다. 제한적인지 않은 예로서, 통신 매체는 유선 네트워크 또는 직접 유선 접속과 같은 유선 매체, 및 음파, 무선 주파수(RF), 마이크로웨이브, 적외선(IR) 및 다른 무선 매체와 같은 무선 매체를 포함할 수 있다. 여기서 사용되는 컴퓨터 판독가능 매체라는 용어는 스토리지 매체 및 통신 매체 둘 다를 포함할 수 있다.
컴퓨팅 장치(1700)는, 휴대용 컴퓨팅 장치, 모바일 컴퓨팅 장치, 특수 용도 장치 또는 위 기능 중 임의의 것을 포함하는 하이브리드 장치 같은 소형 폼 팩터(small-form factor)의 휴대용(또는 모바일) 전자 장치의 일부로서 구현될 수 있다. 컴퓨팅 장치(1700)는 또한 랩톱 컴퓨터 및 랩톱이 아닌 컴퓨터 두 구성을 포함하는 네트워크된 시스템으로서 또는 범용 또는 특화된 서버의 일부로서 구현될 수 있다.
도 18은 도 17 내의 컴퓨팅 장치와 같은 컴퓨팅 자치에 의해 수행될 수 있는 예시적인 방법을 도시하는 흐름도이다. 블록(1822 내지 1832)에 기술된 연산은 컴퓨터(1700)의 드라이브(1730) 또는 프로세서(1710)의 메모리와 같은 컴퓨터 판독 가능 매체에서의 컴퓨터 실행가능 명령어로 저장될 수 있다. 멀티 코어 프로세서 내의 하나 이상의 프로세서(예컨대, 1710)는 아래에 기술된 연산 중 하나 이상을 수행하도록 구성될 수 있다.
컴퓨팅 웨이블릿 변환의 처리는 연산(1822), "각각의 픽셀을 직렬로 로드"로 시작할 수 있다. 연산(1822)에서, 입력 값이 도 1의 SIPO 컴포넌트(104)와 같은 SIPO 컴포넌트 내로 로드될 수 있고, 이는 맬라트 프로세서(110)의 처리 소자로의 직렬 데이터로서 이용될 수 있다. 연산(1822)에 연산(1824), "공통 부분 곱 식별"이 뒤따를 수 있다. 연산(1824)에서, 저역통과 및 고역통과 계수 매트릭스의 수학식에서의 공통 부분 곱이 식별될 수 있다. 연산(1824)에 연산(1826), "공통 부분 곱 제거"가 뒤따를 수 있고, 여기에서 연산(1824)에서 미리 식별된 부분 곱은 계산으로부터 제거될 수 있다. 공통 부분 곱을 제거함으로써, 더 적은 연산이 도 10의 처리 소자(1010)에 의해 수행될 필요가 있고, 이는 처리 소자가 더 적은 컴포넌트와 구현될 수 있으며 그로 인해 적은 전력을 소모한다는 것을 의미한다. 계산 시간은 연산에서의 감소로 인해 또한 줄여질 수 있다.
연산(1826)에 연산(1828), "낮은 크기 계수의 곱셈을 쉬프트-및-가산 연산으로 대체"가 뒤따를 수 있다. 연산(1828)에서, h2, h3 또는 g3와 같은 더 낮은 크기를 가지는 저역통과 및 고역통과 계수는 정규 곱셈 연산 대신 쉬프트-및-가산 유형 연산(예컨대, 도 16의 1606, 1608)을 사용하여 계산될 수 있다. 이러한 대체에 의해 도입되는 가능한 오류는 무시할 만큼 작을 수 있다. 다른 한편, 곱셈 연산의 상당한 수와 곱셈 연산을 위해 요구되는 연관된 하드웨어가 아껴질 수 있고, 이는 더 빠른 계산 시간 및 감소된 전력 소모를 도출할 수 있다.
연산(1828)에 연산(1830), "각각의 변환된 값을 직렬로 언로드"가 뒤따를 수 있다. 연산(1830)에서, 동시에 수행하는 처리 연산(예컨대, 멀티코어 프로세서의 상이한 처리 코어에서의 병렬 연산)의 출력은 일련의 트리 구조 가산기 및 PISO 컴포넌트(예컨대, 도 1의 가산기(126) 및 PISO(124))에 의해 직렬 출력으로 전환될 수 있다. 맬라트 프로세서 주위의 래퍼는, 직렬 데이터를 제공하고 허용하면서, 웨이블릿 변환의 병렬, 멀티 코어 처리를 가능하게 한다.
상기된 처리 내에 포함된 연산은 예시 목적을 위한 것이다. 멀티 코어 프로세서를 사용한 웨이블릿 변환의 계산은 더 적은 또는 추가의 연산과 함께 유사한 처리에 의해 구현될 수 있다. 일부 예시에서, 연산은 상이한 순서로 수행될 수 있다. 일부 다른 예시에서, 다양한 연산이 제거될 수 있다. 또 다른 예시에서, 다양한 연산은 추가적인 연산으로 나누어질 수 있거나 더 적은 연산으로 함께 조합될 수 있다.
도 19는 예시적인 컴퓨터 프로그램 제품의 블록도를 도시하고, 모두 여기에서 기술된 적어도 일부 실시예에 따라 배열된다. 일부 실시예에서, 도 19에 도시된 바와 같이, 컴퓨터 프로그램 제품(1900)은 예를 들어 프로세서에 의해 실행되면 도 17에 관해 상기된 기능성을 제공할 수 있는 기계 판독 가능 명령어(1904)를 또한 포함할 수 있는 신호 베어링 매체(1902)를 포함할 수 있다. 그러므로, 예를 들면 프로세서(1710)를 참조하여, 도 19에 도시된 태스크 중 하나 이상은 여기에서 기술된 멀티 코어 프로세서를 사용한 웨이블릿 변환의 계산과 연관된 동작을 수행하기 위해 매체(1902)에 의해 프로세서(1710)로 전달된 명령어(1904)에 응답하여 실행될 수 있다. 그러한 명령어 중 일부는 공통 부분 곱을 식별하는 것, 공통 부분 곱을 제거하는 것, CSD로 낮은 크기 계수의 곱셈을 대체하는 것 및/또는 맬라트 변환 주위에 래퍼를 생성하는 것을 포함할 수 있다.
일부 구현예에서, 도 19에 도시된 신호 베어링 매체(1902)는 하드 디스크 드라이브, CD(Compact Disk), DVD(Digital Video Disk), 디지털 테이프, 메모리 등과 같은 컴퓨터 판독 가능 매체(1906)를 포함할 수 있으나, 이에 제한되지는 않는다. 일부 구현예에서, 신호 베어링 매체(1902)는 메모리, 읽기/쓰기(R/W) CD, R/W DVD 등과 같은 기록 가능 매체(1908)를 포함할 수 있으나, 이에 제한되지는 않는다. 일부 구현예에서, 신호 베어링 매체(1902)는 디지털 및/또는 아날로그 통신 매체(예컨대, 광섬유 케이블, 도파관(waveguide), 유선 통신 링크, 무선 통신 링크 등)와 같은 통신 매체(1910)를 포함할 수 있으나, 이에 제한되지는 않는다. 따라서, 예컨대, 프로그램 제품(1900)은, 신호 베어링 매체(1902)가 무선 통신 매체(1910)(예컨대, IEEE 802.11 표준에 따르는 무선 통신 매체)에 의해 전달되는 RF 신호 베어링 매체(302)에 의하여 프로세서(1710)의 하나 이상의 모듈로 전달될 수 있다.
본 개시는 웨이블릿 기반 데이터 압축을 위한 방법을 나타낸다. 일부 예시에 따르면, 방법은 픽셀의 세트와 연관된 데이터(102)를 수신하는 단계 및 일련의 이산 웨이블릿 변환(DWT) 저역통과 및 고역통과 필터링 연산(114, 112)을 적용시킴으로써 웨이블릿 계수를 계산하는 단계를 포함한다. 계산 동안, 많은 필터링 연산이 저역통과 필터링 연산 및 고역통과 필터링 연산(1824) 중 적어도 하나에 대한 공통 부분 곱을 식별하고, 공통 부분 곱(1826)을 제거함으로써 줄여진다. 방법은 남은 필터링 연산에 기초하여 DWT를 적용시키는 단계를 또한 포함할 수 있다.
다른 예시에 따르면, 방법은 웨이블릿 계수의 제1부는 낮은 크기 계수로서, 웨이블릿 계수의 제2부는 높은 크기 계수로서 분류하는 단계, 높은 크기 웨이블릿 계수에 대한 공통 부분 곱을 제거하는 단계, 및 낮은 크기 웨이블릿 계수에 대한 곱셈 연산(1502, 1506)을 쉬프트-및-가산 연산(1514, 1518)으로 대체하는 단계를 더 포함할 수 있다.
추가적인 예시에 따르면, 방법은 CSD(Canonical Signed Digit) 인코딩을 이용하는 쉬프트-및-가산 연산(1514)을 수행하는 단계, 고역통과 필터 소자(112), 저역통과 필터 소자(114 및 데시메이션 소자(116)를 포함하는 각각의 처리 소자를 가지는 멀티코어 프로세서 내의 복수의 처리 소자(1010)에 의해 DWT 변환을 수행하는 단계, 픽셀의 세트와 연관된 데이터를 직렬-입력-병렬-출력(SIPO) 컴포넌트(104)에서 데이터 스트림으로서 수신하는 단계, 병렬-입력-직렬-출력(PISO) 컴포넌트(124)에서 멀리코어 프로세서의 출력을 수신하는 단계 및/또는 PISO 컴포넌트(124)의 출력으로부터 데이터 스트림으로서 픽셀에 연관된 압축된 데이터를 제공하는 단계 중 하나 이상을 더 포함할 수 있다.
또 다른 예시에 따르면, 방법은 계수의 각각의 크기에 기초하여 웨이블릿 계수를 소팅하는 단계, 가장 큰 웨이블릿 계수와 시작하는 웨이블릿 계수를 계산하는 단계(404, 504) 및 소정의 오류 제한에 따르는 모든 웨이블릿 계수보다 더 적은 것을 포함하는 부분 합에 기초하여 DWT를 적용시키는 단계를 더 포함할 수 있다. 픽셀의 세트는 또한 이미지 및 비디오 스트림 중 하나와 연관될 수 있다.
또 추가적인 예시에 따르면, 방법은, 공통 부분 곱이 제1(1504), 제2(1502) 및 제5(1506) 웨이블릿 계수에 대해 제거되고, 제3(1510) 및 제4(1508) 웨이블릿 계수에 대한 곱셈 연산이 쉬프트-및-가산 연산으로 대체되는, 다섯 번의 저역통과 필터 단계(1500)를 이용하는 단계 및/또는 공통 부분 곱이 제1(1602) 및 제4(1604) 웨이블릿 계수에 대해 제거되고, 제2(1608) 및 제3(1606) 웨이블릿 계수에 대한 곱셈 연산이 이동-가상 연산으로 대체되는 네 번의 고역통과 필터 단계(1600)를 이용하는 단계를 포함할 수 있다.
본 개시는, 픽셀의 세트와 연관된 데이터를 수신하는 단계, 일련의 저역통과 및 고역통과 필터링 연산에 의해 수행되는 이산 웨이블릿 변환(DWT)을 위한 멀티코어 프로세서(1822)로 각각의 픽셀을 직렬 단어로 로딩하는 단계, 남은 필터링 연산에 기초하여 DWT를 적용시키는 단계를 포함할 수 있는 웨이블릿 기반 데이터 압축을 위한 다른 방법을 또한 나타낸다. 계산 프로세스에서의 다수의 필터링 연산은, 저역통과 필터링 연산 및 고역통과 필터링 연산 중 적어도 하나를 위해 공통 부분 곱(1824)을 식별하고, 필터링 연산의 결과인 웨이블릿 계수를 그들 각각의 크기에 기초하여 소팅하고, 웨이블릿 계수의 제1부를 낮은 크기 계수로, 웨이블릿 계수의 제2부를 낮은 크기 계수로 분류하고, 높은 크기 웨이블릿 계수에 대한 공통 부분 곱(1826)을 제거하고, 및/또는 낮은 크기 웨이블릿 계수에 대한 곱셈 연산(1502, 1506)을 쉬프트-및-가산 연산(1514, 1518)으로 대체함으로써 줄여질 수 있다.
일부 예시에 따르면, 다른 방법은 각각의 변환된 값을 직렬-단어 방식(1832)으로 언로딩하는 단계 및 FIFO(First In First Out) 방식에서 픽셀(1822)을 로딩하고 변환된 값(1832)을 언로딩하는 단계를 더 포함할 수 있다. 부분 곱은 곱의 최종 합을 아우르는 계산이 되도록 최대 웨이블릿 계수와 시작하여 계산될 수 있다.
다른 예시에 따르면, 다른 방법은 각각 DWT를 적용하기 위한 네 개의 두-단계 파이프라인 입력을 가지는 복수의 처리 소자(1010)를 이용하는 단계를 또한 포함할 수 있고, 여기에서 각각의 처리 소자를 위한 파이프라인 중 한 쌍은 저역통과 계산(114)에 전용되고, 각각의 처리 소자를 위한 파이프라인 중 다른 한 쌍은 고역통과 계산(112)에 전용된다. 파이프라인의 각 쌍 중 하나의 파이프라인은 클록 신호(1004)의 상승 에지에서 피드될 수 있고, 파이프라인의 각 쌍 중 다른 파이프라인은 클록 신호(1006)의 하강 에지에서 피드된다.
추가적인 예시에 따르면, 다른 방법은 클록 신호의 상승 에지에서 제1 가산기(1012)로 그리고 클록 신호의 하강 에지에서 제2 가산기(1014)로 복수의 처리 소자의 출력을 제공하는 단계 및 제1 및 제2 가산기의 출력에서 변환된 값을 직렬-단어 언로딩을 위해 RAM(Random Access Memory(1002, 1008) 및 버터 중 하나로 제1 및 제2 가산기의 출력에서 변환된 값을 제공하는 단계를 더 포함할 수 있다.
또 다른 예시에 따르면, 다른 방법은 복수의 처리 소자의 저역통과 출력을 클록 신호의 상승 에지에서 제1 가산기(1406)로 그리고 클록 신호의 하강 에지에서 제2 가산기(1408)로 제공하는 단계 및 복수의 처리 소자의 고역통과 출력을 클록 신호의 상승 에지에서 제3 가산기(1410)로 그리고 클록 신호의 하강 에지에서 제4 가산기(1412)로 제공하는 단계를 더 포함할 수 있다. 제1, 제2, 제3 및 제4 가산기(1406-1412)는 트리 가산기로서 작동될 수 있다.
본 개시는 웨이블릿 기반 데이터 압축을 수행하도록 적응된 집적 회로(IC)(100)를 더 나타낸다. 일부 예시에 따라, IC는 픽셀의 세트와 연관된 데이터를 수신하고, 이산 웨이블릿 변환(DWT)을 수행하기 위해 각각의 코어가 고역통과 처리 소자 및 저역통과 처리 소자를 포함하는 복수의 코어(110)로 각각의 픽셀을 직렬-단어로 로드하도록 적응된 NOC(network-on-chip)(104)를 포함할 수 있다. 복수의 코어는 저역통과 필터링 연산 및 고역통과 필터링 연산 중 적어도 하나를 위해 공통 부분 곱을 식별하고, DWT를 수행함에 있어서 공통 부분 곱을 제거할 수 있다. IC는 복수의 코어로부터 직렬-단어 방식으로 각각의 변환된 값을 언로드하도록 적응된 제2 NOC(124)를 또한 포함할 수 있다.
다른 예시에 따라, IC의 복수의 코어(110)는 필터링 연산으로부터의 웨이블릿 계수를 그들 각각의 크기에 기초하여 소팅하고, 웨이블릿 계수의 제1부를 낮은 크기 계수로, 웨이블릿 계수의 제2부를 높은 크기 계수로 분류하고, 높은 크기 웨이블릿 계수(1826)에 대한 공통 부분 곱을 제거하고, 낮은 크기 웨이블릿 계수에 대한 곱셈 연산을 쉬프트-및-가산 연산(1828)으로 대체하고, 및/또는 곱의 최종 합을 아우르는 계산을 위해 최대 위이블릿 계수와 시작하여 웨이블릿 계수를 계산할 수 있다.
나타난 방법과 같이, IC에 의해 수행되는 쉬프트-및-가산 연산(1518)은 CSD(Canonical Signed Digit) 인코딩을 사용하여 수행될 수 있다. 각각의 코어는 데시메이션 소자(116)를 더 포함할 수 있다. 제1 NOC(104)는 직렬-입력-병렬-출력(SIPO) 컴포넌트일 수 있고, 제2 NOC(124)는 병렬-입력-직렬-출력(PISO) 컴포넌트일 수 있다. 게다가, 처리 소자(1010)는 네 개의 두-단계 파이프라인 입력을 포함할 수 있고, 각각의 처리 소자에 대한 파이프라인 중 한 쌍은 저역통과 계산에 전용되고, 파이프라인의 다른 한 쌍은 고역통과 계산에 전용된다.
추가적인 예시에 따라, 파이프라인의 각각의 쌍 중 하나의 파이프라인은 클록 신호(1004)의 상승 에지에서 피드될 수 있고, 파이프라인의 각각의 쌍 중 다른 파이프라인은 클록 신호(1006)의 하강 에지에서 피드된다. 처리 소자의 출력은 클록 신호의 상승 에지에서 제1 가산기(1012)로 그리고 클록 신호의 하강 에지에서 제2 가산기(1014)로 제공될 수 있다. IC는 직렬-단어 언로딩을 위해 제1 및 제2 가상기로부터 변환된 값을 수신하도록 적응된 RAM(Random Access Memory)(1002, 1008) 또는 버퍼를 더 포함할 수 있다. 처리 소자의 저역통과 출력은 클록 신호의 상승 에지에서 제1 가산기(1406)로 그리고 클록 신호의 하강 에지에서 제2 가산기(1408)로 제공될 수 있고, 처리 소자의 저역통과 출력은 클록 신호의 상승 에지에서 제3 가산기(1410)로 그리고 클록 신호의 하강 에지에서 제4 가산기(1412)로 제공될 수 있다. 제1, 제2, 제3 및 제4 가산기(1406-1412)는 트리 가산기로서 작동될 수 있다.
시스템 양상들의 하드웨어와 소프트웨어 구현 사이에는 구별이 거의 없다. 하드웨어 또는 소프트웨어의 사용은 일반적으로 (그러나 어떤 맥락에서 하드웨어 및 소프트웨어 사이의 선택이 중요하게 될 수 있다는 점에서 항상 그런 것은 아니지만) 비용 대비 효율의 트레이드오프(tradeoff)를 나타내는 설계상 선택(design choice)이다. 여기에서 기술된 프로세스 및/또는 시스템 및/또는 다른 기술들이 영향 받을 수 있는 다양한 수단(vehicles)(예를 들어, 하드웨어, 소프트웨어 및/또는 펌웨어)이 있으며, 선호되는 수단은 프로세스 및/또는 시스템 및/또는 다른 기술이 사용되는 맥락(context)에 따라 변경될 것이다. 예를 들어, 만약 구현자가 속도 및 정확도가 중요하다고 결정하면, 구현자는 주로 하드웨어 및/또는 펌웨어(firmware) 수단을 선택할 수 있고, 만약 유연성이 중요하다면, 구현자는 주로 소프트웨어 구현을 선택할 수 있으며, 또는, 또 다른 대안으로서, 구현자는 하드웨어, 소프트웨어, 및/또는 펌웨어 중 일부 조합을 선택할 수 있다.
전술한 상세한 설명은 블록도, 흐름도, 및/또는 예시의 사용을 통해 장치 및/또는 프로세스의 다양한 실시예를 설명하였다. 그러한 블록도, 흐름도, 및/또는 예시가 하나 이상의 기능 및/또는 동작을 포함하는 한, 당업자라면 그러한 블록도, 흐름도, 또는 예시 내의 각각의 기능 및/또는 동작은 하드웨어, 소프트웨어, 펌웨어, 또는 실질적으로 그들 임의의 조합의 넓은 범위에 의해 개별적으로 및/또는 집합적으로 구현될 수 있다는 것이 이해될 것이다. 일 실시예에서, 여기에서 기술된 대상의 몇몇 부분은 ASIC(Application Specific Integrated Circuit), FPGA(Field Programmable Gate Array), DSP(Digital Signal Processor) 또는 다른 집적의 형태를 통해 구현될 수 있다. 그러나, 당업자라면, 여기에서 기술된 실시예의 일부 양상이, 하나 이상의 컴퓨터 상에 실행되는 하나 이상의 컴퓨터 프로그램(예를 들어, 하나 이상의 컴퓨터 시스템 상에 실행되는 하나 이상의 프로그램), 하나 이상의 프로세서 상에서 실행되는 하나 이상의 프로그램(예를 들어, 하나 이상의 마이크로프로세서 상에서 실행되는 하나 이상의 프로그램), 펌웨어 또는 실질적으로 그들의 조합으로서, 전체적으로 또는 부분적으로 균등하게 집적 회로에 구현될 수 있다는 알 수 있으며, 소프트웨어 및/또는 펌웨어를 위한 코드의 작성 및/또는 회로의 설계는 본 개시에 비추어 당업자에게 자명할 것이다.
본 개시는 다양한 태양의 실시예로서 의도된 본 출원에 기술된 특정 예시들에 제한되지 않을 것이다. 당업자에게 명백할 바와 같이, 많은 수정과 변형이 그 사상과 범위를 벗어나지 않으면서 이루어질 수 있다. 여기에 열거된 것들에 더하여, 본 개시의 범위 안에서 기능적으로 균등한 방법과 장치가 위의 설명으로부터 당업자에게 명백할 것이다. 그러한 수정과 변형은 첨부된 청구항의 범위에 들어가도록 의도된 것이다. 본 개시는 첨부된 청구항의 용어에 의해서만, 그러한 청구항에 부여된 균등물의 전 범위와 함께, 제한될 것이다. 본 개시가 물론 다양할 수 있는 특정 방법, 물질 및 구성에 제한되지 않는 것으로 이해될 것이다. 또한, 여기에서 사용된 용어는 단지 특정 실시예들을 기술하기 위한 목적이고, 제한하는 것으로 의도되지 않음이 이해될 것이다.
또한, 당업자라면, 여기에서 기술된 대상의 수단(mechanism)들이 다양한 형태의 프로그램 제품으로 분포될 수 있음을 이해할 것이며, 여기에서 기술된 대상의 실시예는, 분배를 실제로 수행하는데 사용되는 신호 베어링 매체(signal bearing medium)의 특정 유형과 무관하게 적용됨을 이해할 것이다. 신호 베어링 매체의 예시는, 플로피 디스크, 하드 디스크 드라이브, CD(Compact Disc), DVD(Digital Video Disk), 디지털 테이프, 컴퓨터 메모리 등과 같은 판독가능 유형의 매체 및 디지털 및/또는 아날로그 통신 매체(예를 들어, 섬유 광학 케이블, 웨이브가이드, 유선 통신 링크, 무선 통신 링크 등)와 같은 전송 유형 매체를 포함할 수 있으나, 이에 제한되지는 않는다.
당업자라면, 여기서 설명된 형식으로 장치 및/또는 프로세스를 기술하고, 이후, 공학 실무를 사용하여 그러한 기술된 장치 및/또는 방법을 데이터 처리 시스템에 통합한다는 것은 당해 분야에서는 일반적이란 것을 인식할 것이다. 즉, 여기서 기술된 장치 및/또는 방법의 적어도 일부는 합당한 실험 량을 통해 데이터 처리 시스템에 통합될 수 있다. 당업자라면, 전형적인 데이터 처리 시스템은 일반적으로 시스템 유닛 하우징, 비디오 디스플레이 장치, 휘발성 및 비휘발성 메모리 같은 메모리, 마이크로프로세서 및 디지털 신호 프로세서와 같은 프로세서, 운영 체제, 드라이버, 그래픽 사용자 인터페이스 및 애플리케이션 프로그램과 같은 컴퓨터 엔티티(computational entities), 터치 패드 또는 스크린 같은 하나 이상의 상호작용 장치, 및/또는 피드백 루프 및 제어 모듈(예컨대, 공통 부분 곱을 식별하고, 곱셈 연산을 CSD 연산으로 대체하는 등)를 포함하는 제어 시스템 중 하나 이상을 일반적으로 포함한다는 것을 인식할 것이다. 전형적인 데이터 처리 시스템은 데이터 컴퓨팅/통신 및/또는 네트워크 컴퓨팅/통신 시스템에서 전형적으로 발견되는 바와 같은 임의의 적절한 상업적으로 이용 가능한 컴포넌트를 이용하여 구현될 수 있다.
여기에서 기술된 대상은 때때로 상이한 다른 컴포넌트 또는 구성요소 내에 포함되거나 접속된 상이한 컴포넌트 또는 구성요소를 도시한다. 도시된 그러한 아키텍처는 단순히 예시적인 것이고, 사실상 동일한 기능을 달성하는 다른 많은 아키텍처가 구현될 수 있다는 것이 이해되어야 한다. 개념적으로, 동일한 기능을 달성하기 위한 컴포넌트의 임의의 배치는 원하는 기능이 달성되도록 유효하게 "연관"된다. 이에 따라, 특정 기능을 달성하기 위해 여기서 결합된 임의의 두 개의 컴포넌트는, 아키텍처 또는 중간 컴포넌트와는 무관하게, 원하는 기능이 달성되도록 서로 "연관"된 것으로 볼 수 있다. 마찬가지로, 연관된 임의의 두 개의 컴포넌트는 또한 원하는 기능을 달성하기 위해 서로 "동작적으로 접속"되거나 또는 "동작적으로 연결"되는 것으로 간주될 수 있고, 그와 같이 연관될 수 있는 임의의 두 개의 컴포넌트는 또한 원하는 기능을 달성하기 위해 서로 "동작적으로 연결가능"한 것으로 볼 수 있다. 동작적으로 연결가능하다는 것의 특정예는 물리적으로 연결가능하고 및/또는 물리적으로 인터액팅하는 컴포넌트 및/또는 무선으로 인터액팅이 가능하고 및/또는 무선으로 인터액팅하는 컴포넌트 및/또는 논리적으로 인터액팅하고 및/또는 논리적으로 인터액팅이 가능한 컴포넌트를 포함하지만, 이에 한정되는 것은 아니다.
여기에서 실질적으로 임의의 복수 및/또는 단수의 용어의 사용에 대하여, 당업자는 맥락 및/또는 응용에 적절하도록, 복수를 단수로 및/또는 단수를 복수로 해석할 수 있다. 다양한 단수/복수의 치환은 명확성을 위해 여기에서 명시적으로 기재될 수 있다.
당업자라면, 일반적으로 본 개시에 사용되며 특히 첨부된 청구범위(예를 들어, 첨부된 청구범위)에 사용된 용어들이 일반적으로 "개방적(open)" 용어(예를 들어, 용어 "포함하는"은 "포함하지만 이에 제한되지 않는"으로, 용어 "갖는"는 "적어도 갖는"으로, 용어 "포함하다"는 "포함하지만 이에 한정되지 않는" 등으로 해석되어야 함)로 의도되었음을 이해할 것이다. 또한, 당업자라면, 도입된 청구항의 기재사항의 특정 수가 의도된 경우, 그러한 의도가 청구항에 명시적으로 기재될 것이며, 그러한 기재사항이 없는 경우, 그러한 의도가 없음을 또한 이해할 것이다. 예를 들어, 이해를 돕기 위해, 이하의 첨부 청구범위는 "적어도 하나" 및 "하나 이상" 등의 도입 구절의 사용을 포함하여 청구항 기재사항을 도입할 수 있다. 그러나, 그러한 구절의 사용이, 부정관사 "하나"("a" 또는 "an")에 의한 청구항 기재사항의 도입이, 그러한 하나의 기재사항을 포함하는 실시예로, 그러한 도입된 청구항 기재사항을 포함하는 특정 청구항을 제한함을 암시하는 것으로 해석되어서는 안되며, 동일한 청구항이 도입 구절인 "하나 이상" 또는 "적어도 하나" 및 "하나"("a" 또는 "an")과 같은 부정관사(예를 들어, "하나"는 "적어도 하나" 또는 "하나 이상"을 의미하는 것으로 해석되어야 함)를 포함하는 경우에도 마찬가지로 해석되어야 한다. 이는 청구항 기재사항을 도입하기 위해 사용된 정관사의 경우에도 적용된다. 또한, 도입된 청구항 기재사항의 특정 수가 명시적으로 기재되는 경우에도, 당업자라면 그러한 기재가 적어도 기재된 수(예를 들어, 다른 수식어가 없는 "두개의 기재사항"을 단순히 기재한 것은, 적어도 두 개의 기재사항 또는 두 개 이상의 기재사항을 의미함)를 의미하도록 해석되어야 함을 이해할 것이다.
또한, "A, B 및 C 등 중의 적어도 하나"와 유사한 규칙이 사용된 경우에는, 일반적으로 그러한 해석은 당업자가 그 규칙을 이해할 것이라는 전제가 의도된 것이다(예를 들어, "A, B 및 C 중의 적어도 하나를 갖는 시스템"은, A만을 갖거나, B만을 갖거나, C만을 갖거나, A 및 B를 함께 갖거나, A 및 C를 함께 갖거나, B 및 C를 함께 갖거나, A, B, 및 C를 함께 갖는 시스템 등을 포함하지만 이에 제한되지 않음). "A, B 또는 C 등 중의 적어도 하나"와 유사한 규칙이 사용된 경우에는, 일반적으로 그러한 해석은 당업자가 그 규칙을 이해할 것이라는 전제가 의도된 것이다(예를 들어, "A, B 또는 C 중의 적어도 하나를 갖는 시스템"은, A만을 갖거나, B만을 갖거나, C만을 갖거나, A 및 B를 함께 갖거나, A 및 C를 함께 갖거나, B 및 C를 함께 갖거나, A, B, 및 C를 함께 갖는 시스템 등을 포함하지만 이에 제한되지 않음). 또한 당업자라면, 실질적으로 임의의 이접 접속어(disjunctive word) 및/또는 두 개 이상의 대안적인 용어들을 나타내는 구절은, 그것이 상세한 설명, 청구범위 또는 도면에 있는지와 상관없이, 그 용어들 중의 하나, 그 용어들 중의 어느 하나, 또는 그 용어들 두 개 모두를 포함하는 가능성을 고려했음을 이해할 것이다. 예를 들어, "A 또는 B"라는 구절은 "A" 또는 "B" 또는 "A 및 B"의 가능성을 포함하는 것으로 이해될 것이다.
추가적으로, 개시의 특징 또는 양태가 마쿠시(Markush) 그룹으로 기술되는 경우, 개시는 마쿠시 그룹의 임의의 개별 요소 또는 요소들의 하위 그룹 역시 포함하고 있다는 것을 당업자는 인식할 것이다.
당업자에게 이해될 것과 같이, 임의의 그리고 모든 목적에서든, 기술 내용을 제공하는 것 등에 있어서, 여기에 개시되어 있는 모든 범위는 임의의 그리고 모든 가능한 하위범위와 그러한 하위범위의 조합을 또한 포함한다. 임의의 열거된 범위는 적어도 1/2, 1/3, 1/4, 1/5, 1/10 등으로 나누어지는 동일한 범위를 충분히 설명하고 실시가능하게 하는 것으로서 쉽게 인식될 수 있다. 제한하지 않는 예시로서, 여기서 논의되는 각각의 범위는 하위 1/3, 중앙 1/3, 상위 1/3 등으로 나누어질 수 있다. 또한, "까지", "적어도", "보다 많은", "보다 적은" 등과 같은 언어는 기재된 수를 포함하며, 전술한 하위범위로 후속적으로 나누어질 수 있는 범위를 지칭함이 당업자에게 이해되어야 한다. 마지막으로, 범위는 각각의 개별 요소를 포함함이 이해되어야 한다. 따라서, 예를 들어, 1-3개의 셀을 갖는 그룹은 1, 2 또는 3개의 셀을 갖는 그룹들을 의미한다. 유사하게, 1-5개의 셀을 갖는 그룹은 1, 2, 3, 4 또는 5개의 셀을 갖는 그룹을 의미한다.
다양한 양상 및 실시예들이 여기에서 개시되었지만, 다른 양상 및 실시예들이 당업자에게 명확할 것이다. 본 개시에 기재된 다양한 양상 및 실시예는 예시의 목적으로 제시된 것이고, 제한하려고 의도된 것이 아니며, 진정한 범위와 사상은 이하 청구범위에 의해 나타낸다.

Claims (42)

  1. 삭제
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 웨이블릿 기반(wavelet bsed) 데이터 압축을 위한 방법으로서,
    픽셀의 세트와 연관된 데이터를 수신하는 단계;
    일련의 이산 웨이블릿 변환(discrete wavelet transform; DWT) 저역통과(low-pass) 및 고역통과(high-pass) 필터링 연산을 적용함으로써 웨이블릿 계수를 계산하는 단계로서, 여기서 필터링 연산의 수는:
    상기 저역통과 필터링 연산 및 상기 고역통과 필터링 연산 중 적어도 하나에 대한 공통 부분 곱(common partial product)을 파악하고;
    상기 공통 부분 곱을 제거하고;
    상기 웨이블릿 계수의 제1 부분을 낮은 크기 계수로, 상기 웨이블릿 계수의 제2 부분을 높은 크기 계수로 분류(classifying)하고;
    상기 높은 크기 웨이블릿 계수에 대한 상기 공통 부분 곱을 제거하고; 그리고
    상기 낮은 크기 웨이블릿 계수에 대한 곱셈 연산을 쉬프트-및-가산 연산(shift-and-add operation)으로 대체(replacing)
    함으로써 줄어드는 것인, 웨이블릿 계수를 계산하는 단계; 및
    남은 필터링 연산(remaining filtering operations)에 기초하여 상기 DWT를 적용하는 단계
    를 포함하는 방법.
  12. 삭제
  13. 제11항에 있어서,
    쉬프트-및-가산 연산을 수행하는 단계를 더 포함하는 방법.
  14. 제11항에 있어서,
    상기 DWT를 적용하는 단계는,
    멀티코어 프로세서에서, 각각의 처리 소자가 고역통과 필터 소자, 저역통과 필터 소자 및 데시메이션(decimation) 소자를 포함하는, 복수의 처리 소자에 의해 상기 DWT를 수행하는 단계를 더 포함하는 방법.
  15. 제14항에 있어서,
    상기 데이터를 수신하는 단계는,
    직렬-입력-병렬-출력(serial-in-parallel-out; SIPO) 컴포넌트에서 데이터 스트림으로서 상기 픽셀의 세트와 연관된 상기 데이터를 수신하는 단계를 포함하고,
    상기 방법은,
    상기 처리 소자로 상기 SIPO 컴포넌트의 출력을 제공하는 단계;
    병렬-입력-직렬-출력(parallel-in-serial-out; PISO) 컴포넌트에서 상기 멀티코어 프로세서의 출력을 수신하는 단계; 및
    상기 PISO 컴포넌트의 출력으로부터 데이터 스트림으로서 상기 픽셀과 연관된 압축된 데이터를 제공하는 단계
    를 더 포함하는 방법.
  16. 제11항에 있어서,
    상기 웨이블릿 계수 각각의 크기에 기초하여 상기 웨이블릿 계수를 소팅하는 단계; 및
    최대 웨이블릿 계수로부터 시작하여 상기 웨이블릿 계수를 계산하는 단계
    를 더 포함하는 방법.
  17. 제16항에 있어서,
    상기 DWT를 적용하는 단계는,
    특정 오차 한계에 따라 모든 웨이블릿 계수보다 적은 것을 포함하는 부분 합에 기초하여 상기 DWT를 적용하는 단계를 더 포함하는 방법.
  18. 제11항에 있어서,
    상기 픽셀의 세트는 정지 이미지 및 비디오 스트림 중 하나와 연관되는, 방법.
  19. 웨이블릿 기반(wavelet bsed) 데이터 압축을 위한 방법으로서,
    픽셀의 세트와 연관된 데이터를 수신하는 단계;
    일련의 이산 웨이블릿 변환(discrete wavelet transform; DWT) 저역통과(low-pass) 및 고역통과(high-pass) 필터링 연산을 적용함으로써 웨이블릿 계수를 계산하는 단계로서, 여기서 필터링 연산의 수는:
    상기 저역통과 필터링 연산 및 상기 고역통과 필터링 연산 중 적어도 하나에 대한 공통 부분 곱(common partial product)을 파악하고; 그리고
    상기 공통 부분 곱을 제거
    함으로써 줄어드는 것인, 웨이블릿 계수를 계산하는 단계;
    남은 필터링 연산(remaining filtering operations)에 기초하여 상기 DWT를 적용하는 단계; 및
    다섯 개의 저역통과 필터링 단계를 이용하는 단계를 더 포함하고, 여기에서 상기 공통 부분 곱은 제1, 제2 및 제5 웨이블릿 계수에 대하여 제거되고, 제3 및 제4 웨이블릿 계수에 대한 곱셈 연산은 쉬프트-및-가산 연산으로 대체되는, 방법.
  20. 제19항에 있어서,
    네 개의 고역통과 필터링 단계(filter stage)를 이용하는 단계를 더 포함하고, 여기에서 상기 공통 부분 곱은 제1 및 제4 웨이블릿 계수에 대하여 제거되고, 제2 및 제3 웨이블릿 계수에 대한 곱셈 연산은 쉬프트-및-가산 연산으로 대체되는, 방법.
  21. 웨이블릿 기반 데이터 압축을 위한 방법으로서,
    픽셀의 세트와 연관된 데이터를 수신하는 단계;
    일련의 저역통과 및 고역통과 필터링 연산에 의해 수행되는 이산 웨이블릿 변환(DWT)을 위해 멀티코어 프로세서로 각각의 픽셀을 직렬-단어로(word-serially) 로딩하는 단계로서, 여기서 필터링 연산의 수는:
    상기 저역통과 필터링 연산 및 상기 고역통과 필터링 연산 중 적어도 하나에 대한 공통 부분 곱(common partial product)을 파악하고;
    상기 필터링 연산의 결과인 웨이블릿 계수를 각각의 크기에 기초하여 소팅(sorting)하고;
    상기 웨이블릿 계수의 제1 부분을 낮은 크기 계수로, 상기 웨이블릿 계수의 제2 부분을 높은 크기 계수로 분류하고;
    상기 높은 크기 웨이블릿 계수에 대한 공통 부분 곱을 제거하고;
    상기 낮은 크기 웨이블릿 계수에 대한 곱셈 연산을 쉬프트-및-가산 연산으로 대체;
    함으로써 줄어드는 것인, 로딩하는 단계; 및
    남은 필터링 연산에 기초하여 상기 DWT를 적용하는 단계
    를 포함하는 방법.
  22. 제21항에 있어서,
    직렬-단어 방식으로 각각의 변환된 값을 언로딩하는 단계를 더 포함하는 방법.
  23. 제22항에 있어서,
    상기 픽셀을 로딩하고 FIFO(first-in-first-out) 방식으로 상기 변환된 값을 언로딩하는 단계를 더 포함하는 방법.
  24. 제21항에 있어서,
    최대 웨이블릿 계수로부터 시작하여 상기 부분 곱을 계산하여 이 계산이 곱의 최종 합으로 수렴하도록 하는 단계를 더 포함하는 방법.
  25. 제21항에 있어서,
    DWT를 각각 적용하기 위한 네 개의 두-단계 파이프라인 입력을 가지는 복수의 처리 소자를 이용하는 단계를 더 포함하고, 이들 각각은 저역통과 계산에 전용되는 각각의 처리 소자를 위한 한 쌍의 상기 파이프라인과, 고역통과 계산에 전용되는 각각의 처리 소자를 위한 다른 한 쌍의 상기 파이프라인을 가지는, 방법.
  26. 제25항에 있어서,
    파이프라인의 각각의 쌍 중 하나의 파이프라인은 클록 신호의 상승 에지(positive edge)에서 피드되고, 파이프라인의 각각의 쌍 중 다른 파이프라인은 상기 클록 신호의 하강 에지(negative edge)에서 피드되는, 방법.
  27. 제25항에 있어서,
    상기 복수의 처리 소자의 저역통과 출력을 클록 신호의 상승 에지에서 제1 가산기로, 상기 클록 신호의 하강 에지에서 제2 가산기로 제공하는 단계; 및
    상기 복수의 처리 소자의 고역통과 출력을 클록 신호의 상기 상승 에지에서 제3 가산기로, 상기 클록 신호의 상기 하강 에지에서 제4 가산기로 제공하는 단계
    를 더 포함하는 방법.
  28. 제27항에 있어서,
    상기 제1, 제2, 제3, 및 제4 가산기의 출력에서 변환된 값을 직렬-단어 언로딩을 위해 RAM(random access memory) 및 버퍼 중 하나로 제공하는 단계를 더 포함하는 방법.
  29. 삭제
  30. 제27항에 있어서,
    상기 제1, 제2, 제3 및 제4 가산기는 트리 가산기(tree adder)로 수행되는, 방법.
  31. 웨이블릿 기반 데이터 압축을 수행하도록 적응된 집적 회로(IC)로서,
    픽셀의 세트와 연관된 데이터를 수신하고, 복수의 코어로 각각의 픽셀을 직렬-단어로 로딩하도록 적응되는 제1 NOC(network-on-chip);
    복수의 코어로서, 각각의 코어가 이산 웨이블릿 변환(DWT)을 수행하기 위해 고역통과 처리 소자 및 저역통과 처리 소자를 포함하며,
    저역통과 필터링 연산 및 고역통과 필터링 연산 중 적어도 하나에 대한 공통 부분 곱을 파악하고;
    DWT를 수행에 있어서 상기 공통 부분 곱을 제거하고;
    상기 필터링 연산으로부터의 웨이블릿 계수를 각각의 크기에 기초하여 소팅하고;
    상기 웨이블릿 계수의 제1 부분은 낮은 크기 계수로, 상기 제 웨이블릿 계수의 제2 부분은 높은 크기 계수로 분류하고;
    상기 높은 크기 웨이블릿 계수에 대한 공통 부분 곱을 제거하고; 그리고
    상기 낮은 크기 웨이블릿 계수에 대한 곱셈 연산을 쉬프트-및-가산 연산으로 대체
    하도록 적응된 복수의 코어; 및
    상기 복수의 코어로부터 직렬-단어 방식으로 각각의 변환된 값을 언로드하도록 적응된 제2 NOC
    를 포함하는 집적 회로(IC).
  32. 삭제
  33. 제31항에 있어서,
    상기 복수의 코어는,
    최대 웨이블릿 계수부터 시작하여 상기 웨이블릿 계수를 계산하여 이 계산이 곱의 최종 합으로 수렴하도록 더 적응되는, 집적 회로.
  34. 제31항에 있어서,
    듀얼 RAM 을 더 포함하며,
    두 독립적인 지연 라인(delay line) 중 하나는 상승 클록 에지에서 피드되고 다른 하나는 하강 클록 에지에서 피드되는 상기 지연 라인을 피드하는, 듀얼 RAM 중 하나는 상기 상승 클록 에지에서 독출되고, 다른 하나는 상기 하강 에지에서 독출되는 상기 듀얼 RAM
    을 더 포함하는 집적 회로.
  35. 제31항에 있어서,
    각각의 코어는 데시메이션 소자를 더 포함하는, 집적 회로.
  36. 제31항에 있어서,
    상기 제1 NOC는 SIPO(serial-in-parallel-out) 소자인, 집적 회로.
  37. 제31항에 있어서,
    상기 제2 NOC는 PISO(parallel-in-serial-out) 소자인, 집적 회로.
  38. 웨이블릿 기반 데이터 압축을 수행하도록 적응된 집적 회로(IC)로서,
    픽셀의 세트와 연관된 데이터를 수신하고, 복수의 코어로 각각의 픽셀을 직렬-단어로 로딩하도록 적응되는 제1 NOC(network-on-chip);
    복수의 코어로서, 각각의 코어가 이산 웨이블릿 변환(DWT)을 수행하기 위해 고역통과 처리 소자 및 저역통과 처리 소자를 포함하며,
    저역통과 필터링 연산 및 고역통과 필터링 연산 중 적어도 하나에 대한 공통 부분 곱을 파악하고; 그리고
    DWT를 수행에 있어서 상기 공통 부분 곱을 제거
    하도록 적응된 복수의 코어; 및
    상기 복수의 코어로부터 직렬-단어 방식으로 각각의 변환된 값을 언로드하도록 적응된 제2 NOC
    를 포함하고,
    상기 처리 소자는 네 개의 두-단계 파이프라인 입력을 포함하고, 이들 각각은 저역통과 계산에 전용되는 각각의 처리 소자를 위한 한 쌍의 상기 파이프라인과 고역통과 계산에 전용되는 다른 한 쌍의 상기 파이프라인을 가지는, 집적 회로.
  39. 제38항에 있어서,
    파이프라인의 각각의 쌍 중 하나의 파이프라인은 클록 신호의 상승 에지에서 피드되고, 파이프라인의 각각의 쌍 중 다른 파이프라인은 상기 클록 신호의 하강 에지에서 피드되는, 집적 회로.
  40. 제38항에 있어서,
    상기 처리 소자의 저역통과 출력은 클록 신호의 상승 에지에서 제1 가산기로, 상기 클록 신호의 하강 에지에서 제2 가산기로 제공되고, 상기 처리 소자의 고역통과 출력은 상기 클록 신호의 상기 상승 에지에서 제3 가산기로, 상기 클록 신호의 상기 하강 에지에서 제4 가산기로 제공되는, 집적 회로.
  41. 제40항에 있어서,
    직렬-단어 언로딩을 위해 상기 제1, 제2, 제3, 및 제4 가산기로부터 변환된 값을 수신하도록 적응된 버퍼 및 RAM(random access memory) 중 하나를 더 포함하는 집적 회로.
  42. 삭제
KR20137017215A 2010-11-30 2011-01-14 멀티코어 프로세서를 사용하는 웨이블릿 변환 KR101490153B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
IN3635/CHE/2010 2010-11-30
IN3635CH2010 2010-11-30
PCT/IB2011/050167 WO2012073122A1 (en) 2010-11-30 2011-01-14 Wavelet transformation using multicore processors

Publications (2)

Publication Number Publication Date
KR20130106865A KR20130106865A (ko) 2013-09-30
KR101490153B1 true KR101490153B1 (ko) 2015-02-05

Family

ID=46171251

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20137017215A KR101490153B1 (ko) 2010-11-30 2011-01-14 멀티코어 프로세서를 사용하는 웨이블릿 변환

Country Status (4)

Country Link
US (1) US9197902B2 (ko)
JP (1) JP5640157B2 (ko)
KR (1) KR101490153B1 (ko)
WO (1) WO2012073122A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103018629A (zh) * 2012-11-23 2013-04-03 广东电网公司电力科学研究院 一种基于马拉算法的电力系统故障录波数据分析方法
US9398312B2 (en) 2013-11-04 2016-07-19 Samsung Display Co., Ltd. Adaptive inter-channel transform for wavelet color image compression
US9858495B2 (en) * 2015-06-23 2018-01-02 Hong Kong Applied Science And Technology Research Wavelet-based image decolorization and enhancement
CN106612438A (zh) * 2016-01-28 2017-05-03 四川用联信息技术有限公司 一种基于重叠分区高级小波变换技术的图像压缩方法
CN107102196A (zh) * 2017-05-10 2017-08-29 中国海洋大学 一种复杂电力信号的噪声滤除装置及方法
CN110830005B (zh) * 2019-11-13 2023-01-24 中国科学院微电子研究所 数字滤波器电路的实现方法及系统
KR102320134B1 (ko) * 2019-11-29 2021-11-02 주식회사 에이티센스 생체신호를 변환하여 전송하는 생체신호 측정 장치, 및 생체신호 처리 방법
US12059309B2 (en) 2021-04-16 2024-08-13 Atsens Co., Ltd. Biosignal measuring device for converting and transmitting biosignal and method of processing the biosignal
CN112991230A (zh) * 2021-04-27 2021-06-18 南京誉葆科技有限公司 一种合成孔径雷达图像处理方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100012453A (ko) * 2008-07-29 2010-02-08 광운대학교 산학협력단 이산 웨이블릿 변환기의 LUT(Look UpTable) 기반 병렬 곱셈방법
KR20110020144A (ko) * 2009-08-21 2011-03-02 광운대학교 산학협력단 컨벌루션 기반 이산 웨이블릿 변환 장치

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0770957B2 (ja) 1988-04-26 1995-07-31 パイオニア株式会社 Firフィルタ
JP2816295B2 (ja) 1993-05-21 1998-10-27 鐘紡株式会社 離散コサイン変換方法および離散コサイン変換回路
JP3081086B2 (ja) 1993-07-22 2000-08-28 沖電気工業株式会社 ウェーブレット変換装置
US6310963B1 (en) 1994-09-30 2001-10-30 Sensormatic Electronics Corp Method and apparatus for detecting an EAS (electronic article surveillance) marker using wavelet transform signal processing
US6614847B1 (en) 1996-10-25 2003-09-02 Texas Instruments Incorporated Content-based video compression
US6055554A (en) * 1998-03-04 2000-04-25 Internatinal Business Machines Corporation Floating point binary quad word format multiply instruction unit
JPH11306166A (ja) 1998-04-20 1999-11-05 Ricoh Co Ltd ウェーブレット変換装置
US6584111B1 (en) 1998-11-04 2003-06-24 Northern Telecom Limited ABR flow control using single bit congestion indication and wavelet transform filtering
US6353634B1 (en) 1998-12-17 2002-03-05 The United States Of America As Represented By The Secretary Of The Navy Video decoder using bi-orthogonal wavelet coding
US6215908B1 (en) 1999-02-24 2001-04-10 Intel Corporation Symmetric filtering based VLSI architecture for image compression
US6757343B1 (en) 1999-06-16 2004-06-29 University Of Southern California Discrete wavelet transform system architecture design using filterbank factorization
US6643406B1 (en) 1999-07-28 2003-11-04 Polaroid Corporation Method and apparatus for performing linear filtering in wavelet based domain
US7170941B2 (en) 1999-08-13 2007-01-30 Patapsco Designs Inc. Temporal compression
US6766286B2 (en) 2001-03-28 2004-07-20 Intel Corporation Pyramid filter
WO2003003685A2 (en) * 2001-05-01 2003-01-09 Binj Technologies, Inc. Constant amplitude modulation for dsl
US20030046322A1 (en) 2001-06-01 2003-03-06 David Guevorkian Flowgraph representation of discrete wavelet transforms and wavelet packets for their efficient parallel implementation
US6976046B2 (en) 2001-06-01 2005-12-13 Nokia Corporation Architectures for discrete wavelet transforms
US8090730B2 (en) * 2001-12-04 2012-01-03 University Of Southern California Methods for fast progressive evaluation of polynomial range-sum queries on real-time datacubes
US7149361B2 (en) * 2002-11-26 2006-12-12 Lockheed Martin Corporation Method and apparatus for image processing to detect changes in a scene
US6947056B2 (en) * 2003-03-25 2005-09-20 Lsi Logic Corporation Low power, variable precision DDA for 3D graphics applications
US7480416B2 (en) 2003-05-09 2009-01-20 Telecommunications Research Laboratories Implementation of discrete wavelet transform using lifting steps
JP2005202562A (ja) 2004-01-14 2005-07-28 Konica Minolta Photo Imaging Inc 画像処理方法、画像処理装置及び画像処理プログラム
US7715928B1 (en) 2004-05-17 2010-05-11 University Of Southern California Efficient communications and data compression algorithms in sensor networks using discrete wavelet transform
US7646924B2 (en) 2004-08-09 2010-01-12 David Leigh Donoho Method and apparatus for compressed sensing
US7590589B2 (en) 2004-09-10 2009-09-15 Hoffberg Steven M Game theoretic prioritization scheme for mobile ad hoc networks permitting hierarchal deference
US7895420B2 (en) * 2004-09-23 2011-02-22 Fujitsu Limited System and method for eliminating common subexpressions in a linear system
US20060206744A1 (en) 2005-03-08 2006-09-14 Nec Laboratories America, Inc. Low-power high-throughput streaming computations
US7587099B2 (en) 2006-01-27 2009-09-08 Microsoft Corporation Region-based image denoising
WO2007137047A2 (en) 2006-05-16 2007-11-29 Greer Douglas S Modeling the neocortex
US7738713B2 (en) * 2006-08-31 2010-06-15 Ching-Wei Yeh Method for processing digital image with discrete wavelet transform and apparatus for the same
US7751873B2 (en) 2006-11-08 2010-07-06 Biotronik Crm Patent Ag Wavelet based feature extraction and dimension reduction for the classification of human cardiac electrogram depolarization waveforms
US8451903B2 (en) 2009-05-14 2013-05-28 Massachusetts Institute Of Technology Selecting transforms for compressing visual data
US8842940B1 (en) * 2009-10-02 2014-09-23 Rockwell Collins, Inc. Multiprocessor discrete wavelet transform

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100012453A (ko) * 2008-07-29 2010-02-08 광운대학교 산학협력단 이산 웨이블릿 변환기의 LUT(Look UpTable) 기반 병렬 곱셈방법
KR20110020144A (ko) * 2009-08-21 2011-03-02 광운대학교 산학협력단 컨벌루션 기반 이산 웨이블릿 변환 장치

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
손창훈 외 1명, Shift-adder를 이용한 JPEG2000용 9/7 DWT필터의 효율적인 VLSI구조. 제28회 한국정보처리학회 추계학술발표대회 논문집. 2007.11, 제14권, 제2호, pp.748-749 *
손창훈 외 1명, Shift-adder를 이용한 JPEG2000용 9/7 DWT필터의 효율적인 VLSI구조. 제28회 한국정보처리학회 추계학술발표대회 논문집. 2007.11, 제14권, 제2호, pp.748-749*

Also Published As

Publication number Publication date
JP5640157B2 (ja) 2014-12-10
US9197902B2 (en) 2015-11-24
KR20130106865A (ko) 2013-09-30
JP2014500670A (ja) 2014-01-09
WO2012073122A1 (en) 2012-06-07
US20120236945A1 (en) 2012-09-20

Similar Documents

Publication Publication Date Title
KR101490153B1 (ko) 멀티코어 프로세서를 사용하는 웨이블릿 변환
Kotteri et al. A comparison of hardware implementations of the biorthogonal 9/7 DWT: convolution versus lifting
CN110705703B (zh) 基于脉动阵列的稀疏神经网络处理器
CN107707219B (zh) 一种基于fpga的高采样率fir滤波等效实现方法
He Multiwavelet construction via the lifting scheme
CN1187698C (zh) 内在并行的二维离散小波变换的vlsi结构设计方法
CN1295653C (zh) 一种实现直接二维离散小波变换的电路
KR101061008B1 (ko) 컨벌루션 기반 이산 웨이블릿 변환 장치
Tausif et al. Memory-efficient architecture for FrWF-based DWT of high-resolution images for IoMT applications
Huang et al. A 13 bits 4.096 GHz 45 nm CMOS digital decimation filter chain with Carry-Save format numbers
US20230283263A1 (en) Method and Apparatus for Finite Impulse Response Filter Under Constrained Sampling Rate
Maamoun et al. VLSI design of 2-D discrete wavelet transform for area-efficient and high-speed image computing
Zhang et al. A VLSI architecture for a high-speed computation of the 1D discrete wavelet transform
Vaithiyanathan et al. A High-Speed Computational Pipeline Single MAC-Based VLSI Architecture for Real-Time Signal and Image Processing
CN110764602B (zh) 用于降低存储开销的汇流阵列
Guptha et al. Convolution based multilevel DWT architecture using distributed arithmetic and FIR bi-orthogonal filter for two-dimensional data analysis
Abdul-Jabbar et al. Design and FPGA Implementations of Four Orthogonal DWT Filter Banks Using Lattice Structures.
KR20100023123A (ko) 컨볼루션 곱셈결과의 재사용을 위한 역방향 이산 웨이블릿 변환기의 2단 파이프라인 및 버퍼 관리 방법
CN114710677A (zh) 图像压缩方法、装置、存储介质及终端
Kumar et al. A two stage pipeline architecture for hardware implementation of multi-level decomposition of 1-D framelet transform
US20160224093A1 (en) Digital filtering device, digital filtering method, and storage media storing program
Shafei Implementation of VlSI Based Image Compression Approach on Reconfigurable Computing System-A Survey
Babuji et al. High Speed Parallel and Reconfigurable VLSI Implementation of 2-D DWT
Wisdom et al. An Efficient Implementation of a 2D DWT on FPGA
Nageswaran et al. VLSI architectures for lifting based DWT: A detailed survey

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: 20171228

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190328

Year of fee payment: 5