KR100462634B1 - 데이터의 처리방법, 그 방법을 사용한 워터마크 추출장치및 방법 - Google Patents

데이터의 처리방법, 그 방법을 사용한 워터마크 추출장치및 방법 Download PDF

Info

Publication number
KR100462634B1
KR100462634B1 KR10-2003-0015193A KR20030015193A KR100462634B1 KR 100462634 B1 KR100462634 B1 KR 100462634B1 KR 20030015193 A KR20030015193 A KR 20030015193A KR 100462634 B1 KR100462634 B1 KR 100462634B1
Authority
KR
South Korea
Prior art keywords
filter
secondary filter
loading
output
blocks
Prior art date
Application number
KR10-2003-0015193A
Other languages
English (en)
Other versions
KR20040080288A (ko
Inventor
마쓰마누
오윤학
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR10-2003-0015193A priority Critical patent/KR100462634B1/ko
Publication of KR20040080288A publication Critical patent/KR20040080288A/ko
Application granted granted Critical
Publication of KR100462634B1 publication Critical patent/KR100462634B1/ko

Links

Classifications

    • AHUMAN NECESSITIES
    • A47FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
    • A47DFURNITURE SPECIALLY ADAPTED FOR CHILDREN
    • A47D13/00Other nursery furniture
    • A47D13/02Baby-carriers; Carry-cots
    • A47D13/025Baby-carriers; Carry-cots for carrying children in seated position

Landscapes

  • Complex Calculations (AREA)

Abstract

본 발명은 신호처리에 관한 것으로, 구체적으로는 병렬처리를 통한 데이터의 로드와 저장횟수를 줄여 데이터의 처리방법과 그 방법을 사용한 워터마크 정보추출장치 및 방법에 관한 것이다. 본 발명의 데이터 처리방법은, (a) 소정의 필터블록을 하나 이상의 2차의 필터블록으로 분할하는 단계; (b) 처리하여야 할 입력데이터 중 K 개를 레지스터에 로드하는 단계; (c) 상기 복수의 2차 필터블록중의 하나인 제1의 2차 필터블록의 필터 계수를 로드하는 단계; (d) 상기 로딩된 K 개의 입력 데이터를 하나씩 순차적으로 입력받아 상기 로딩된 필터 계수를 사용하여 출력을 계산하는 단계; (e) 상기 분할한 2차 필터블록중의 하나인 제2의 2차 필터블록의 필터계수를 로드하고 상기 계산된 출력을 입력으로 하여 출력을 다시 계산하는 것을, 분할한 모든 2차 필터블록에 대해서 수행하고, 모든 2차 필터블록에 대해서 출력을 계산하였는가를 판단하는 단계; (f) 상기 모든 2차 필터블록에 대해서 계산된 출력결과를 저장하는 단계; 및 (g) 다음 K 개의 입력 데이터 그룹을 입력받아, 모든 K 개의 입력 데이터 그룹에 대하여 계산을 완료할 때까지 상기 (c) 내지 (f) 단계를 수행하는 단계를 포함한다. 본 발명은, 알고리즘 수행에 필요한 데이터 로딩과 저장 횟수를 감소시키고, 따라서 데이터 캐쉬 미스를 줄이고 알고리즘 수행시간을 줄이는 효과가 있다.

Description

데이터의 처리방법, 그 방법을 사용한 워터마크 추출장치 및 방법 {Data processing method, and watermark extractor and extracting method thereby}
본 발명은 신호처리에 관한 것으로, 구체적으로는 병렬처리를 통한 데이터의 로드와 저장횟수를 줄인 데이터의 처리방법과 그 방법을 사용한 워터마크 정보추출장치 및 방법에 관한 것이다.
과거에는, 마이크로 프로세서에서의 신호 처리속도는 그 마이크로 프로세서에서 수행되는 프로그램이 산술연산의 수를 최소화하도록 구현되었는가 여부에 달려 있었으나, 현재에는 마이크로 프로세서에서 수행되는 프로그램의 성능(performance)은, 데이터 메모리뿐만 아니라 프로세서 파이프라인을 가진 코드들간의 복잡한 상호작용(interaction)에 의해서 결정된다. 따라서, 프로그램의 효율을 높이기 위해서는 프로세서의 구조에 대하여 잘 알고 있어야 한다.
신호처리 알고리즘에 있어서 FFT(Fast Fourier Transform)의 중요성 때문에, FFT를 빠르게 수행할 수 있는 방법에 대한 연구가 많이 있었으며, 몇몇 빠른 알고리즘이 개발되었다. 그중 하나가 FFTW(FFT West) 알고리즘이다. FFTW 알고리즘은 MATLAB에서 구현된 fft() 내장함수를 처리하는데 사용된다.
FFTW는 적응적이고(adaptive), 프로세서의 구조를 고려하여 고성능의 FFT를 구현한 것으로, 적응적이고 고성능인 Cooley-Tukey FFT를 사용한다. FFT의 계산은 코드렛(codelet)이라 불리는 고도로 최적화된 그리고 C 코드의 구성블록으로 이루어진 실행기(executor)에 의해서 수행된다. 코드렛은 FFTW 변환의 일부분을 수행하는 코드의 특정부분이다. 실행기에 의해서 인가되는 코드렛의 조합이, plan 이라 불리우는 특별 데이터 구조에 의해서 특정된다.
FFTW 알고리즘은 수행하여야 할 전체 문제를 작은 단위로 나누고, 전체 문제의 해답을 얻기 위하여 이러한 작은 크기의 문제들을 최적으로 결합함으로써, 캐쉬 미스(코드와 데이터)의 횟수와 오버헤드를 줄인다. 캐쉬 미스는 프로세서가 데이터를 처리하기 위하여 캐쉬로부터 데이터 또는 명령어를 읽었으나, 캐쉬내에 데이터 또는 명령어가 없기 때문에 외부 메모리로부터 데이터 또는 명령어를 읽어와야 하는 것을 의미한다. 따라서 캐쉬 미스가 발생하면 처리속도가 떨어진다.
그러나, FFTW는 프로세서에 있는 레지스터의 제한 때문에 데이터 로딩 오버헤드 문제를 해결할 수 없다. 즉, 프로세서는 제한된 갯수의 레지스터만을 가지고 있기 때문에 한번 데이터를 로딩하고 이 데이터에 관련된 모든 처리를 수행하고 난 후 다음 데이터를 로딩하는 것이 캐쉬 미스를 줄일 수 있다.
DCT(Discrete Cosine Transform) 또는 DST(Discrete Sine Transform)와 같은 변환도 빠른 신호 처리 알고리즘이다. 최근에는 빠른 MDCT(Modified DCT)가 오디오 코딩에 있어서 매우 유용하게 사용된다. 빠른 상관(correlation) 알고리즘에서 FFT 와 IFFT(Inverse FFT)를 사용하고, 빠른 컨벌루션(convolution) 알고리즘에서도 FFT를 사용한다. MP3(MPEG-1 Layer 3) 오디오 인코더에서도 폴리 페이즈 필터(poly-phase filter)가 사용되고, 빠른 필터링이 보간법(interpolation)에서도 사용된다.
상술한 알고리즘은, 이를 구현하는데 필요한 산술연산(arithmetic operation)의 수를 줄이는데 목표를 두고 있다. 산술연산은 덧셈, 뺄셈, 곱셈, multiply-accumulation 등이 있다. 예를 들어 DFT(Discrete Fourier Transform)은 2N2번의 곱셈 연산을 필요로 한다. 반면 FFT는 2Nlog2N 번의 곱셈 연산을 사용하여 동일한 결과를 얻는다. 상관 알고리즘에서는 N2번의 곱셈 연산을 필요로 하는 것에 비하여, 빠른 상관 알고리즘에서는 4Nlog2N 번의 곱셈 연산만을 필요로 한다. 그러나 이러한 산술연산 뿐만 아니라 데이터의 로딩(loading)과 저장(storing)도 계산의 복잡도 측면에서는 매우 중요하다. 그러나 이러한 로딩 및 저장의 횟수를 줄이는 것은 고려하지 않았다는 문제점이 있다.
본 발명이 이루고자 하는 기술적 과제는, 병렬처리를 통하여 데이터 및 명령어의 로딩과 계산결과의 저장횟수를 줄여 데이터의 처리속도를 높인 데이터 처리방법을 제공하는데 있다.
본 발명이 이루고자 하는 다른 기술적 과제는, 상기의 데이터 처리방법을 사용한 워터마크 정보추출장치 및 방법을 제공하는데 있다.
도 1a는 IIR 필터의 블록도이다.
도 1b는 IIR 필터를 여러개의 2차 블록으로 분할하였을 때의 블록도이다.
도 2는 MLS-PC 방법을 IIR 필터에 적용하였을 때의 신호처리방법의 플로우차트이다.
도 3a는 FIR 필터의 블록도이다.
도 3b는 MLS-PC 방법을 FIR 필터에 적용한 도면이다.
도 4a 내지 도 4c는 자기상관을 계산하는 것을 설명하기 위한 도면이다.
도 5는 오디오 워터마크 추출장치의 블록도이다.
상기의 과제를 이루기 위하여 본 발명에 의한 데이터 처리방법은, (a) 소정의 필터블록을 하나 이상의 2차의 필터블록으로 분할하는 단계; (b) 처리하여야 할 입력데이터 중 K 개를 레지스터에 로드하는 단계; (c) 상기 복수의 2차 필터블록중의 하나인 제1의 2차 필터블록의 필터 계수를 로드하는 단계; (d) 상기 로딩된 K 개의 입력 데이터를 하나씩 순차적으로 입력받아 상기 로딩된 필터 계수를 사용하여 출력을 계산하는 단계; (e) 상기 분할한 2차 필터블록중의 하나인 제2의 2차 필터블록의 필터계수를 로드하고 상기 계산된 출력을 입력으로 하여 출력을 다시 계산하는 것을, 분할한 모든 2차 필터블록에 대해서 수행하고, 모든 2차 필터블록에 대해서 출력을 계산하였는가를 판단하는 단계; (f) 상기 모든 2차 필터블록에 대해서 계산된 출력결과를 저장하는 단계; 및 (g) 다음 K 개의 입력 데이터 그룹을 입력받아, 모든 K 개의 입력 데이터 그룹에 대하여 계산을 완료할 때까지 상기 (c) 내지 (f) 단계를 수행하는 단계를 포함한다.
상기의 과제를 이루기 위하여 본 발명에 의한 워터마크 추출장치는, PCM 오디오 데이터를 입력받아 다운 샘플링을 수행하는 샘플링 주파수 변환부; 상기 샘플링 주파수 변환된 PCM 오디오 데이터의 고주파 성분 및 저주파 성분을 필터링하는 대역통과필터; 상기 대역통과필터 출력 신호의 자기상관(autocorrelation)을 계산하는 자기상관계산부; 및 상기 자기상관계산부에서 계산된 자기상관정보로부터 워터마크 정보를 추출하는 워터마크정보 추출부를 포함한다.
상기의 과제를 이루기 위하여 본 발명에 의한 워터마크 추출방법은, (a) PCM 오디오 데이터를 입력받아 다운 샘플링을 수행하는 단계; (b) 상기 샘플링 주파수 변환된 PCM 오디오 데이터의 고주파 성분 및 저주파 성분을 필터링하는 단계; (c) 상기 대역통과필터의 출력 신호의 자기상관(autocorrelation)을 계산하는 단계; 및 (d) 상기 자기상관정보로부터 워터마크 정보를 추출하는 단계를 포함한다.
상기한 과제를 이루기 위하여 본 발명에서는, 상기 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공한다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 일실시예를 상세히 설명한다.
DSP 알고리즘의 구현은 힘들지만 최근에는 고성능의 DSP가 등장하면서 점점 쉬워지고 있다. 그러나, DSP 칩 제조업자는 더 적은 메모리를 가진, 더 저렴한 칩을 공급하려고 한다. 따라서, DSP 알고리즘을 DSP 칩에 최적화하기 위하여, DSP 알고리즘을 수행하기 위한 프로세싱 사이클을 줄이는 것과 데이터 메모리를 어떻게 사용하여야 효율적인가를 항상 염두에 두어야 한다.
DSP 알고리즘의 최적화시에는 주어진 알고리즘에 맞는 적절한 명령어(instruction)를 선택하여 사용하여야 한다. 알고리즘을 적절히 변경하여 주어진 명령어 세트(instruction set)를 사용하여 효과적으로 구현할 수도 있다. 알고리즘의 최적화시에는 가용 레지스터의 수, 데이터를 로딩하는데 필요한 프로세싱 사이클, 데이터와 명령어 캐쉬의 크기, 산술 연산을 수행하는데 필요한 프로세싱 사이클 등이 항상 고려되어야 한다.
본 발명에서는 여러가지 DSP 알고리즘을 프로세서에 구현한다. 즉, 데이터를 로딩하고 저장하는데 소요되는 사이클을 최소화함으로써 데이터 캐쉬 미스를 줄일 수 있다. 구현된 알고리즘은 일단 하나의 값이 프로세서의 내부 레지스터에 로드되었으면, 다른 값이 로드되기 전까지는 여러번 사용되도록 한다.
본 발명의 알고리즘은 데이터 로딩과 저장 연산을 줄이는 것을 목표로 하고 있다. 이것은 레지스터에 로드된 값을 재사용하여 이루어질 수 있다. 로드된 값의 재사용은 DSP 알고리즘을 약간 변형함으로써 이루어질 수 있다.
필터링 알고리즘도 상술한 방법을 사용하고, 상관 알고리즘에서는 인접한 출력들간의 관계를 이용하여 여러개의 출력을 병렬적으로 계산한다.
이러한 방법을 사용하면 데이터 메모리의 액세스 횟수를 최소한으로 줄인다. 즉, 레지스터에 로드되는 값들의 수를 최대로 하는데, 이는 여러개의 입력 및 출력을 병렬적으로 처리함으로써 이루어질 수 있다. 즉, 주어진 알고리즘을 프로세서에있는 가용한 레지스터에 맞도록 만들어진 작은 블록으로 나누어 처리한다.
이러한 방법이 IIR 필터 알고리즘에 사용된 예를 설명한다. 그리고 나서 FIR 필터와 상관(correlation) 등에 사용된 예에서도 설명한다.
도 1a는 IIR 필터의 블록도이다.
본 발명의 방법은 데이터의 로딩과 저장횟수를 최소한으로 줄인다고 하여 MLS-PC(Minimum Load and Store using Parallel Computation) 방법이라고 부르고, 이 MLS-PC 방법을 Fast IIR 필터링에 적용한 경우를 도 1a 내지 도 1b를 참조하여 상세히 설명한다.
도 1a를 참조하여 IIR 필터의 출력 y[n]을 표현하면 다음과 같다.
For n = 0 to N-1
y[n] = b0*x[n] + b1*[n-1] + b2*x[n-2] + .... + bM-1*x[n-M+1] +
+ a1*y[n-1] + a2*y[n-2] + .... + aP-1*y[n-M+1]
와 같이 되고, 이를 여러개의 2차의 블록으로 분할하면 도 1b와 같은 형태가 된다.
도 1b는 IIR 필터를 여러개의 2차 블록으로 분할하였을 때의 블록도이다.
여러개의 2차 블록으로 분할하였을 때의 출력 y[n]을 계산하는 프로그램 코드는 다음과 같다.
For n=0 to N-1
{
in = x[n]
y[n] = b00*in + z[0];
out = y[n];
z[0] = b01*in + z[1] - a01*out;
z[1] = b02*in - a02*out;
in = y[n];
y[n] = b10*in + z[2];
z[2] = b11*in + z[3] - a11*out;
z[3] = b12*in - a12*out;
..........
in = y[n]
y[n] = b10*in + z[M-2];
z[M-2] = b11*in + z[M-1] - a11*out;
z[M-1] = b12*in - a12*out;
}
만일 프로세서내에서 사용할 수 있는 가용 레지스터의 수가 많지 않다면, 각각의 블록을 FIR 부분과 IIR 부분으로 분리하고, 각각의 블록에 대해서 처리할 수 있다.
첫번째 2차 블록에서 연산을 수행하기 위해서 모두 7개의 데이터(a1, a2, b0, b1, b2, z0, z1)를 로딩하여야 한다. 따라서 한 개의 2차 블록마다 7번의 데이터 로딩이 필요하고, 따라서 M개의 블록으로 나눈 경우에는 하나의 샘플 데이터를 입력하고 처리를 수행한 후 출력을 얻기 위하여 7M 번의 데이터 연산(load 와 store)을 필요로 한다. 여기서 z0, z1상태변수(state variable)이다.
이를 MLS-PC 알고리즘을 사용하여 최적화하기 위하여, 전체 입력 데이터 x[n]을 K 개의 입력 데이터 단위로, L 개의 그룹으로 분할하면 다음과 같은 프로그램 코드로 표현할 수 있다.
xp=x;
yp=y;
For n = 0 to L-1
{
For k = 0 to K-1
{
in = xp[k];
yp[k] = b00*in + z[0];
z[0] = b01*in + z[1] - a01*yp[k];
z[1] = b02*in - a02*yp[k];
}
For k = 0 to K-1
{
in = yp[k];
yp[k] = b10*in + z[2];
z[2] = b11*in + z[3] - a11*yp[k];
z[3] = b12*in - a12*yp[k];
}
......
For k = 0 to K-1
{
in = yp[k]
yp[k] = b10*in + z[M-2];
z[M-2] = b11*in + z[M-1] - a11*yp[k];
z[M-1] = b12*in - a12*yp[k];
}
xp+=K;
yp+=K;
}
상술한 프로그램을 프로세서 내의 레지스터를 사용하여 다음과 같은 프로그램 코드로 구현할 수 있다. 상태변수 z0, z1등도 레지스터에 보관되는데, K개의 샘플에 대하여 블록의 처리가 모두 수행되므로 K 번의 반복후에만 보관된다.
register int z0, z1, y0, y1, ..., yK-1
xp=x;
yp=y;
For n = 0 to L-1
{
z0=z[M-2]
z1=z[M-1] //z0and z1denote register variables
For k = 0 to K-1
{
in = xp[k];
yk= b00*in + z0// ykdenote the register variables
//allotted for yp[k]
//To implement this
//we need to unroll this loop
z0= b01*in + z1- a01*yk;
z1= b02*in - a02*yk;
}
z[0]=z0
z[1]=z1
z0=z[2]
z1=z[3] //z0and z1denote register variables
For k = 0 to K-1
{
in = yk;
yk= b00*in + z0//ykdenote the register variables
//allotted for yp[k]
z0= b01*in + z1- a01*yk;
z1 = b02*in - a02*yk;
}
z[2]=z0
z[3]=z1
.....
z0=z[M-2]
z1=z[M-1] //z0and z1denote register variables
For k = 0 to K-1
{
in = yk
yk= b00*in + z0//ykdenote the register variables
//allotted for yp[k]
z0= b01*in + z1- a01*yk;
z1= b02*in - a02*yk;
}
z[M-2]=z0
z[M-1]=z1
xp+=K
yp+=K
}
그리고, 하나의 샘플 x[0]이 입력되면, 그 샘플에 대해서 첫번째 2차 블록의 연산을 수행한다. 그러면 로딩하여야 할 데이터는 입력샘플 1개와 계수 b0, b1, b2, a1, a2, z0, z17개이므로 총 8번의 데이터 로딩이 필요하다. 다음 샘플 x[1] 이 입력되면 계수는 이미 로딩되어 있는 상태이므로 샘플 x[1]을 로딩하는 것만 필요하다. 이렇게 하면 K 개의 샘플이 입력되어 처리될 때까지의 총 데이터 로딩횟수는 8 + (K-1)가 된다. 따라서 모두 M 개의 블록으로 나누어져 있다면 모두 [8 + (K-1)]M 번의 데이터 로딩횟수가 발생하고, 샘플당 데이터 로딩횟수는 [8 +(K-1)]M/K 가 된다. 따라서, 데이터 로딩과 저장 연산의 수를 줄일 수 있음을 알 수 있다.
만일, K를 증가시킴으로서 L 값을 감소시킬 수 있다면, 즉, 만일 더 많은 레지스터가 프로세서에서 사용될 수 있고, 따라서 더 많은 값들이 병렬적으로 계산될수 있으면 데이터 연산의 수는 줄어든다.
도 2는 MLS-PC 방법을 IIR 필터에 적용하였을 때의 신호처리방법의 플로우차트이다.
상술한 과정을 도 2를 참조하여 설명하면, 우선 고차의 IIR 필터를 2차 블록의 연속형태로 분할한다(S210). 그리고, 처리하여야 할 입력데이터를 K개 단위로 그룹으로 분할하고, 첫번째 그룹의 K개의 입력 데이터를 레지스터에 로드한다(S220). 다음으로, 2차 블록의 필터 계수를 레지스터에 로드한다(S230). 로딩된 K 개의 입력 데이터를 상기 2차 블록으로 하나씩 순차적으로 입력받아 신호처리를 수행한다(S240). 즉, 맨 처음에는 첫번째 입력 샘플 x[0]을 입력받아 y[0]을 계산하고, 다음 입력샘플 x[1]을 입력받아 y[2]를 계산하고, 이렇게 x[K] 입력에 대한 출력 y[K]를 계산한다. K 개의 입력 데이터를 가지고 모든 2차 블록에 대해서 신호처리계산을 완료하고, 모두 완료되었는가를 판단한다(S250). 만일 모든 2차 블록에 대해서 신호처리계산을 완료하지 못하였으면, 다음 2차 블록의 필터계수로드 단계(S230)로 되돌아가서 신호처리계산을 수행한다. 즉, 첫번째 2차 블록에서 계산된 출력을 입력으로 하고, 다음 2차 블록의 필터계수를 로드하여 출력을 계산한다. 만일 모든 2차 블록에 대해서 신호처리계산을 완료하였으면, 그 계산결과를 메모리에 저장한다(S260). 이렇게 하여 모든 K 개의 입력 데이터 그룹에 대하여 신호처리계산을 완료할 때까지 상기 단계(S220 내지 S260)를 수행한다(S270).
이러한 MLS-PC 방법은 다른 방법으로도 구현될 수 있다. 다른 방법으로 구현된 IIR 필터의 구현은 다음과 같은 것이 있다.
(1) 가용 레지스터가 많을 때, 위에서 설명된 연속적인 2차의 필터로 구성된 IIR 필터에 대해서 두개의 2차 블록을, K 개의 입력 데이터 그룹에 대해서 한번에 수행될 수 있다. 즉 두개의 2차 블록의 필터계수를 모두 레지스터에 로드하여 계산을 수행할 수 있다.
(2) 가용 레지스터가 적을 때, 2차의 IIR 필터의 구조를 2차의 FIR 부분과 IIR 부분을 분리하여 구현할 수 있다. 분리된 2차의 FIR 부분과 IIR 부분에 대해, K 개의 데이터를 각각 입력하여 계산을 수행할 수 있다.
앞에서 설명한 방법들은 가용 레지스터의 수에 따라 선택하도록 구현할 수 있다.
도 3a는 FIR 필터의 블록도이다.
FIR 필터를 수식으로 표현하면 다음과 같다.
y[n] = x[n]*h[0] + x[n-1]*h[1] + x[n-2]*h[2] + .... + x[n-M+1]*h[M-1]
n=0,1,2 N-1
이는 다음과 같은 프로그램 코드로 구현될 수 있다. 그러면 3MN 번의 데이터 연산(로딩 + 저장)을 필요로 한다.
For n = 0 to N
{
For m = 0 to M-1
{
y[n] += x[n-m]*h[m]
}
}
만일,
y0[n] = x[n]*h[0], n=0, 1, 2, ..... M-1
y1[n] = x[n-1]*h[1], n=0, 1, 2, ..... M-1
y2[n] = x[n-2]*h[2], n=0, 1, 2, ..... M-1
......
yM-1[n] = x[n-N]*h[M-1], n=0, 1, 2, ..... M-1
라고 하면, y[n]은 다음과 같다.
y[n] = y0[n] + y1[n] + y2[n] + ...... + yM-1[n]
루프를 재정리하면, 다음과 같다.
for n = 0 to N-1
y[n] = x[n-0]*h[0]
for n = 0 to N-1
y[n] += x[n-1]*h[1]
for n = 0 to N-1
y[n] += x[n-2]*h[2]
.......
for n = 0 to N-1
y[n] += x[n-M+1]*h[3]
도 3b는 MLS-PC 방법을 FIR 필터에 적용한 도면이다.
N개의 입력 데이터를 K개씩으로 분할하여 L개의 그룹으로 나눈다. 그리고 각 그룹에서의 모든 값들의 출력을 병렬적으로 계산하면 다음과 같다.
py= y
px= x
for k = 0 to K-1
py[k] = px[k-0]*h[0]
for k = 0 to K-1
py[k] += px[k-1]*h[1]
for k = 0 to K-1
py[k] += px[k-2]*h[2]
........
for k = 0 to K-1
py[k] += px[k-M+1]*h[M-1]
py+= K
px+= K
첫번째 내부 for 루프에서 동일한 계수인 h[0]를 사용한다. 즉, 매번마다 계수를 로드할 필요가 없다. 각 루프를 모두 수행한 후에는 K개의 출력이 계산된다.
K 값은 yp[k], x[k](k=0,1..K-1) 와 h[0]가 가용된 레지스터에 저장될 수 있도록 선택되어야 한다. 예를 들면, 가용한 레지스터의 수가 10개라면 K=4로 선택한다. 따라서 px[0], px[1], px[2], px[3], py[0], py[1], py[2], py[3] 와 h[0] 은 첫번째 반복 루프에서 레지스터 변수로 저장된다. 두번째 루프에서는 다른 변수들은 레지스터 변수로 이미 저장되어 있기 때문에 h[1]과 px[-4]만 로드하면 된다.
따라서 전체 로딩 횟수는 (K+1+2*(M-1))L = (K+2M-1)L = N+(2M-1)L 이 되고, 따라서, 저장 횟수는 KL=N 이 된다. 그러므로, N개의 출력 샘플에 대해서 필요한 데이터 연산의 총 횟수는 2N+(2M-1)L 이 되고, 한개의 출력 샘플에 필요한 데이터 연산의 수는 2+(2M-1)/K 가 된다.
도 4a 내지 도 4c는 자기상관(autocorrelation)을 계산하는 것을 설명하기 위한 도면이다.
상관은 다음 수학식 1과 같이 정의된다.
여기서 ι는 상관 래그(correlation lag)이다.
예를 들어, r[0] = x(0)y(0) + x(1)y(1) + ...... + x(N-1)y(N-1) 이 되고,r[2] = x(0)y(2) + x(1)y(3) + ...... + x(N-1)y(N+1) 이 된다. 따라서 수학식1에서 알 수 있듯이, N lag 에서 상관 하나를 계산하는데 N 번의 곱셈과 2N 번의 데이터 로딩을 필요로 한다.
따라서, 도 4a 내지 도 4c를 참조하여, 상술한 병렬 계산을 상관(correlation)에 적용하는 것을 설명한다. 도 4a는 x[0], y[0], y[1], y[2]를 레지스터에 로드하여 상관 r0, r1, r2를 계산하는 것을, 도 4b는 x[1], y[3]를 레지스터에 로드하여 상관 r0, r1, r2를 계산하는 것을, 도 4c는 x[2], y[4]를 레지스터에 로드하여 r0, r1, r2를 계산하는 것을 도시한 것이다.
도 4a에서 r[0] = x[0]y[0], r[1] = x[0]y[1], r[2] = x[0]y[2] 로 계산되고, 도 4b에서 r[0] = r[0] + x[1]y[1], r[1] = r[1] + x[1]y[2], r[2] = r[2] + x[1]y[3]로 계산되고, 도 4c 에서 r[0] = r[0] + x[2]y[2], r[1] = r[1] + x[2]y[3], r[2] = r[2] + x[2]y[4] 로 계산된다.
그러나, 본 발명의 MLS-PC 방법을 사용하면 데이터 로딩회수는 줄어든다.
lag 에서의 자기 상관(autocorrelation), r[ι], r[ι+1],.... r[ι+K-1]은 각각 다음 수학식 2와 같이 정의된다.
본 발명의 상관 알고리즘은 K autocorrelation을 병렬적으로 계산한다. 즉, 다음과 같은 순서로 계산한다.
K-1 개의 레지스터를 r0= 0, r0= 0, ....... rK-1= 0 로 셋팅한 후,
x[n], y[n+ι], y[n+ι+1], .... , y[n+ι+K-1]을 레지스터에 로드하면,
r0= r0+ x[n]y[n+ι]
r1= r1+ x[n]y[n+ι+1]
....
rK-1= rK-1+ x[n]y[n+ι+K-1]
그리고 나서, x[n+1], y[n+ι+K]를 레지스터에 로드하면,
r0= r0+ x[n+1]y[n+ι+1]
r1= r1+ x[n+1]y[n+ι+2]
....
rK-1= rK-1+ x[n+1]y[n+ι+K]
이러한 방법으로, x[n+2], y[n+ι+K+1]을 레지스터에 로드하면,
r0= r0+ x[n+2]y[n+ι+2]
r1= r1+ x[n+2]y[n+ι+3]
....
rK-1= rK-1+ x[n+2]y[n+ι+K+1]
......
이러한 순서에 의해서
x[n+N-1], y[n+ι+K+N-1]를 레지스터에 로드하면,
r0= r0+ x[n+N-1]y[n+ι+2]
r1= r1+ x[n+N-1]y[n+ι+3]
....
rK-1= rK-1+ x[n+N-1]y[n+ι+K+N-1] 이 된다.
상술한 바와 같이, 모든 K 곱셈 블록에 대해서 단지 두개의 값의 로딩만을 필요로 한다. 따라서 본 발명과 같이 K 값을 병렬적으로 계산하는 경우 로딩 횟수는 2N 이고, autocorrelation 값 당 필요한 로딩 횟수는 2N/K 이다.
도 5는 오디오 워터마크 추출장치의 블록도이다.
도 5를 참조하여 MLS-PC를 사용한 오디오 워터마크 추출기의 최적화를 설명한다. 워터마크 추출기는 오디오 데이터 헤더에 포함되어 있는 워터마크 정보를 추출하여 복사방지 및 콘텐츠를 보호하는 기능을 한다. 워터마크 추출기는 샘플링 주파수 변환부(510), 대역통과 필터(520), 자기상관계산부(530) 및 워터마크정보 추출부(540)를 포함한다. 워터마크 추출기(watermark extractor)는 샘플링 주파수 변환과 대역통과 필터링을 수행하기 위하여 IIR 필터를 사용한다. 따라서, 추출기는 상술한 MLS-PC 방법을 사용하여 쉽게 최적화 될 수 있다.
샘플링 주파수 변환부(510)는 입력된 PCM 오디오 데이터의 데이터 량을 줄이기 위해서 다운 샘플링(down sampling)을 수행한다. 입력된 오디오의 샘플링 주파수는 일반적으로 192KHz, 176.4KHz, 96KHz, 88.2KHz, 48KHz, 44.1KHz 등이 될 수 있으나, 샘플링 주파수 변환부(510)를 거친 오디오 데이터의 샘플링 주파수는 44.1KHz 또는 48KHz로 된다. 출력되는 오디오 신호도 역시 PCM 오디오 신호이다.
대역통과 필터(520)는 LPF(Low Pass Filter) 와 HPF(High Pass Filter)로 구성되어 있어, 각각 고주파 성분 및 저주파 성분을 필터링한다.
자기상관계산부(530)는 원래 신호와 지연된 신호간의 상관관계를 계산한다.
오디오 워터마크 방법중에 반향 은폐(echo hiding) 기법이 있다. 이는 오디오 신호안에 반향 데이터를 삽입하는 것으로, 인간의 청각이 짧은 반향신호를 감지하지 못한다는 것을 이용하여 서로 다른 지연(delay)을 갖는 반향 신호를 삽입하여, 그 신호에 따라서 워터마크 정보를 삽입하는 방법이다.
워터마크정보 추출부(540) 자기상관계산부(530)에서 계산된 정보로부터 워터마크 정보를 추출한다. 워터마크정보는 원래 콘텐츠에 헤더형태로 들어갈 수 있는데, 여기에는 copyright 정보가 있는데 그 내용으로는 무한정 복제 허용, 1회 복제 허용, 복제 불가 등의 정보를 포함하도록 할 수 있다.
이때 대역통과 필터(520)와 자기상관계산부(530)에서 본 발명의 MLS-PC 방법이 사용된다.
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
상술한 바와 같이 본 발명은, 알고리즘 수행에 필요한 데이터 로딩과 저장 횟수를 감소시키고, 따라서 데이터 캐쉬 미스를 줄이고 알고리즘을 수행하는데 필요한 시간인 MIPS(Million Instruction Per Second)를 줄이는 효과가 있다. 특히 ARM 프로세서와 같은 RISC 기반의 프로세서에 사용시에 효율적이다.

Claims (11)

  1. (a) 소정의 필터블록을 하나 이상의 2차의 필터블록으로 분할하는 단계;
    (b) 처리하여야 할 입력데이터 중 K 개를 레지스터에 로드하는 단계;
    (c) 상기 복수의 2차 필터블록중의 하나인 제1의 2차 필터블록의 필터 계수를 로드하는 단계;
    (d) 상기 로딩된 K 개의 입력 데이터를 하나씩 순차적으로 입력받아 상기 로딩된 필터 계수를 사용하여 출력을 계산하는 단계;
    (e) 상기 분할한 2차 필터블록중의 하나인 제2의 2차 필터블록의 필터계수를 로드하고 상기 계산된 출력을 입력으로 하여 출력을 다시 계산하는 것을, 분할한 모든 2차 필터블록에 대해서 수행하고, 모든 2차 필터블록에 대해서 출력을 계산하였는가를 판단하는 단계;
    (f) 상기 모든 2차 필터블록에 대해서 계산된 출력결과를 저장하는 단계; 및
    (g) 다음 K 개의 입력 데이터 그룹을 입력받아, 모든 K 개의 입력 데이터 그룹에 대하여 계산을 완료할 때까지 상기 (c) 내지 (f) 단계를 수행하는 단계를 포함하는 것을 특징으로 하는 데이터 처리방법.
  2. 제1항에 있어서, 상기 소정의 필터블록은
    IIR(Infinite Impulse Response) 필터인 것을 특징으로 하는 데이터 처리방법.
  3. 제1항에 있어서, 상기 소정의 필터블록은
    FIR(Finite Impulse Response) 필터인 것을 특징으로 하는 데이터 처리방법.
  4. PCM 오디오 데이터를 입력받아 다운 샘플링을 수행하는 샘플링 주파수 변환부;
    상기 샘플링 주파수 변환된 PCM 오디오 데이터의 고주파 성분 및 저주파 성분을 필터링하는 대역통과필터;
    상기 대역통과필터 출력 신호의 자기상관(autocorrelation)을 계산하는 자기상관계산부; 및
    상기 자기상관계산부에서 계산된 자기상관정보로부터 워터마크 정보를 추출하는 워터마크정보 추출부를 포함하는 것을 특징으로 하는 워터마크 추출장치.
  5. 제4항에 있어서, 상기 대역통과필터는
    저주파통과 필터와 고주파통과필터를 함께 구비하는 것을 특징으로 하는 워터마크 추출장치.
  6. 제5항에 있어서, 상기 대역통과필터는
    상기 저주파통과 필터 및 고주파통과 필터를 하나 이상의 2차의 필터블록으로 분할하고, 상기 PCM 오디오 데이터를 K 개 단위의 그룹으로 분할하여, 상기 K 개의 입력 데이터에 대하여 상기 분할된 2차필터블록의 필터계수를 순차적으로 로드하여 계산을 완료한 후에, 다음 K 개의 PCM 오디오 데이터를 입력받아 상기 분할된 2차필터블록의 필터계수를 순차적으로 로드하여 계산을 완료하는 것을 모든 PCM 오디오 데이터에 대하여 수행하는 것을 특징으로 하는 워터마크 추출장치.
  7. (a) PCM 오디오 데이터를 입력받아 다운 샘플링을 수행하는 단계;
    (b) 상기 샘플링 주파수 변환된 PCM 오디오 데이터의 고주파 성분 및 저주파 성분을 필터링하는 단계;
    (c) 상기 대역통과필터의 출력 신호의 자기상관(autocorrelation)을 계산하는 단계; 및
    (d) 상기 자기상관정보로부터 워터마크 정보를 추출하는 단계를 포함하는 것을 특징으로 하는 워터마크 추출방법.
  8. 제7항에 있어서, 상기 (b) 단계는
    저주파통과 필터와 고주파통과필터를 함께 구비하여 필터링하는 것을 특징으로 하는 워터마크 추출장치.
  9. 제8항에 있어서, 상기 (b) 단계는
    (b1) 소정의 필터블록을 하나 이상의 2차의 필터블록으로 분할하는 단계;
    (b2) 처리하여야 할 입력데이터 중 K 개를 레지스터에 로드하는 단계;
    (b3) 상기 복수의 2차 필터블록중의 하나인 제1의 2차 필터블록의 필터 계수를 로드하는 단계;
    (b4) 상기 로딩된 K 개의 입력 데이터를 하나씩 순차적으로 입력받아 상기 로딩된 필터 계수를 사용하여 출력을 계산하는 단계;
    (b5) 상기 분할한 2차 필터블록중의 하나인 제2의 2차 필터블록의 필터계수를 로드하고 상기 계산된 출력을 입력으로 하여 출력을 다시 계산하는 것을, 분할한 모든 2차 필터블록에 대해서 수행하고, 모든 2차 필터블록에 대해서 출력을 계산하였는가를 판단하는 단계;
    (b6) 상기 모든 2차 필터블록에 대해서 계산된 출력결과를 저장하는 단계; 및
    (b7) 다음 K 개의 입력 데이터 그룹을 입력받아, 모든 K 개의 입력 데이터 그룹에 대하여 계산을 완료할 때까지 상기 (b3) 내지 (b6) 단계를 수행하는 단계를 포함하는 것을 특징으로 하는 워터마크 추출방법.
  10. (a) 소정의 필터블록을 하나 이상의 2차의 필터블록으로 분할하는 단계;
    (b) 처리하여야 할 입력데이터 중 K 개를 레지스터에 로드하는 단계;
    (c) 상기 복수의 2차 필터블록중의 하나인 제1의 2차 필터블록의 필터 계수를 로드하는 단계;
    (d) 상기 로딩된 K 개의 입력 데이터를 하나씩 순차적으로 입력받아 상기 로딩된 필터 계수를 사용하여 출력을 계산하는 단계;
    (e) 상기 분할한 2차 필터블록중의 하나인 제2의 2차 필터블록의 필터계수를 로드하고 상기 계산된 출력을 입력으로 하여 출력을 다시 계산하는 것을, 분할한모든 2차 필터블록에 대해서 수행하고, 모든 2차 필터블록에 대해서 출력을 계산하였는가를 판단하는 단계;
    (f) 상기 모든 2차 필터블록에 대해서 계산된 출력결과를 저장하는 단계; 및
    (g) 다음 K 개의 입력 데이터 그룹을 입력받아, 모든 K 개의 입력 데이터 그룹에 대하여 계산을 완료할 때까지 상기 (c) 내지 (f) 단계를 수행하는 단계를 포함하는 것을 특징으로 하는 데이터 처리방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  11. (a) PCM 오디오 데이터를 입력받아 다운 샘플링을 수행하는 단계;
    (b) 상기 샘플링 주파수 변환된 PCM 오디오 데이터의 고주파 성분 및 저주파 성분을 필터링하는 단계;
    (c) 상기 대역통과필터의 출력 신호의 자기상관(autocorrelation)을 계산하는 단계; 및
    (d) 상기 자기상관정보로부터 워터마크 정보를 추출하는 단계를 포함하는 것을 특징으로 하는 워터마크 추출방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR10-2003-0015193A 2003-03-11 2003-03-11 데이터의 처리방법, 그 방법을 사용한 워터마크 추출장치및 방법 KR100462634B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2003-0015193A KR100462634B1 (ko) 2003-03-11 2003-03-11 데이터의 처리방법, 그 방법을 사용한 워터마크 추출장치및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2003-0015193A KR100462634B1 (ko) 2003-03-11 2003-03-11 데이터의 처리방법, 그 방법을 사용한 워터마크 추출장치및 방법

Publications (2)

Publication Number Publication Date
KR20040080288A KR20040080288A (ko) 2004-09-18
KR100462634B1 true KR100462634B1 (ko) 2004-12-23

Family

ID=37365023

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2003-0015193A KR100462634B1 (ko) 2003-03-11 2003-03-11 데이터의 처리방법, 그 방법을 사용한 워터마크 추출장치및 방법

Country Status (1)

Country Link
KR (1) KR100462634B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100828163B1 (ko) * 2006-05-04 2008-05-08 고려대학교 산학협력단 오디오 동기 암호화 방법, 복호화 방법 및 그 장치
CN101378251B (zh) * 2007-08-28 2012-05-30 深圳迈瑞生物医疗电子股份有限公司 一种提高低采样率情况下信号显示质量的方法

Also Published As

Publication number Publication date
KR20040080288A (ko) 2004-09-18

Similar Documents

Publication Publication Date Title
JP5619751B2 (ja) Simd積和演算動作を行うための装置及び方法
US6405229B1 (en) Digital filters
US6279021B1 (en) Digital filters
US7587577B2 (en) Pipelined access by FFT and filter units in co-processor and system bus slave to memory blocks via switch coupling based on control register content
KR100835173B1 (ko) 곱셈 누적 연산을 위한 디지털 신호처리 장치 및 방법
JP2009507423A (ja) 共有されるメモリおよび共有される乗算器のプログラム可能なデジタルフィルタ構成
US6606700B1 (en) DSP with dual-mac processor and dual-mac coprocessor
WO2002091221A2 (en) Address generator for fast fourier transform processor
KR100462634B1 (ko) 데이터의 처리방법, 그 방법을 사용한 워터마크 추출장치및 방법
US20040128335A1 (en) Fast fourier transform (FFT) butterfly calculations in two cycles
Sokolov et al. Implementation of cosine modulated digital filter bank on processor with ARM architecture
US4118784A (en) Differential DFT digital filtering device
US5951628A (en) Method and system for performing a convolution operation
KR100308929B1 (ko) 고속 퓨리에 변환 장치
KR0134042B1 (ko) 디지탈 신호처리장치 및 신호처리방법
Thyagarajan et al. Fast Fourier Transform
US7409418B2 (en) Linearly scalable finite impulse response filter
Kehtarnavaz et al. Real-Time Filtering
US7447722B2 (en) Low latency computation in real time utilizing a DSP processor
JP3428334B2 (ja) デジタル信号処理装置
Fryza et al. Frequency Domain FIR filter optimization for multi-core C6678 DSP
Smith FFT—fRISCy fourier transforms?
US9058209B2 (en) Methods and apparatus for efficient tone detection
WO2021008711A1 (en) Advanced finite impulse response system and method for real coefficients and complex data
Vlaminck et al. Low latency spectral filtering and simultaneous spectrum estimation

Legal Events

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

Payment date: 20081127

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee