매우 기본적인 용어로 스무딩하는 것


17

스무딩이란 무엇이며 어떻게해야합니까?

Matlab에는 음성 신호의 크기 스펙트럼 (FFT의 128 포인트 크기) 인 배열이 있습니다. 이동 평균을 사용하여이를 어떻게 평활화합니까? 내가 이해 한 바에 따르면 특정 수의 요소의 창 크기를 가져와 평균을 취해야하며 이것이 새로운 첫 번째 요소가됩니다. 그런 다음 창을 한 요소 씩 오른쪽으로 이동하고 두 번째 요소가되는 평균을 취하십시오. 이것이 실제로 작동하는 방법입니까? 내가 그렇게하면 최종 결과에 128 개 미만의 요소가 있기 때문에 나는 확신하지 못한다. 그렇다면 어떻게 작동하며 데이터 포인트를 부드럽게하는 데 어떻게 도움이됩니까? 아니면 데이터를 부드럽게 할 수있는 다른 방법이 있습니까?

편집 : 후속 질문에 연결


스펙트럼에 대한 당신은 아마 (시간 차원에서) 평균 함께 여러 스펙트럼이 아닌 하나의 스펙트럼의 주파수 축을 따라 실행 평균 싶어
endolith

@endolith는 모두 유효한 기술입니다. 주파수 영역 (Danielle Periodogram이라고도 함)에서의 평균화는 시간 영역에서의 윈도우 화와 동일합니다. 여러 주기도의 평균 ( "spectra")은 실제 주기도에 필요한 앙상블 평균을 모방하려는 시도입니다 (이를 Welch 주기도라고합니다). 또한 의미 론적으로 "스무딩"은 원인이 아닌 저역 통과 필터링이라고 주장합니다. 칼만 필터링 대 칼만 스무딩, 위너 필터링 v 위너 스무딩 등을 참조하십시오. 사소한 차이가 있으며 구현에 따라 다릅니다.
Bryan

답변:


23

평활화는 여러 가지 방법으로 수행 할 수 있지만 매우 기본적이고 일반적인 용어로 요소를 주변 요소와 혼합하여 신호를 균일하게 만들 수 있습니다. 노이즈를 제거하기 위해 신호를 약간 번지거나 흐리게합니다. 예를 들어, 매우 간단한 스무딩 기술은 모든 신호 요소 f(t)를 원래 값의 0.8에 각 이웃 값의 0.1을 더한 값으로 다시 계산하는 것입니다 .

f'(t) = 0.1*f(t-1) + 0.8*f(t) + 0.1*f(t+1)

곱셈 계수 또는 가중치가 어떻게 하나를 더하는지 유의하십시오. 따라서 신호가 상당히 일정하면 스무딩이 크게 변경되지 않습니다. 그러나 신호에 갑작스런 변덕스러운 변화가 포함 된 경우, 이웃의 기여가 그 소음을 약간 없애는 데 도움이 될 것입니다.

이 재 계산 함수에서 사용하는 가중치를 커널 이라고 부를 수 있습니다 . 1 차원 가우스 함수 또는 다른 기본 커널은 귀하의 경우에 수행해야합니다.

특정 종류의 스무딩의 좋은 예 :

위 :
평활 신호 아래 : 평활 신호

여기에 이미지 설명을 입력하십시오

몇 가지 커널의 예 :

여기에 이미지 설명을 입력하십시오


이것이 가중 이동 평균입니까? 이것을 창 크기가 3이라고합니까? 첫 번째 요소와 마지막 요소는 어떻습니까? 128 요소의 배열이 있고 16 또는 32 요소의 창을 사용하려는 경우 어떻게 수정합니까?

@ user13267 : 예, 평활 커널은 가중 이동 평균이라고 말할 수 있습니다. 균일 한 커널 (두 번째 이미지 참조)을 사용하는 경우 이는 평범한 이동 평균입니다. 창 크기가 맞습니다. 에지를 처리하기 위해 1) 데이터 제로 패딩, 2) 마지막 값 반복, 3) 신호 미러링의 세 가지 기본 접근 방식이 있습니다. 모든 경우에있어 커널이 무에 빠지지 않도록 데이터를 가장합니다.
Junuxx

제로 패딩이 무에 빠지는 것으로 계산되지 않습니까? 이동 평균 프로세스가 끝나면 새 "평균화 된"데이터 세트에 원래 데이터와 동일한 수의 데이터가 있어야합니까? 그런 다음 시작이나 끝에서 그것을 0으로 채우거나 마지막 데이터를 반복하면 배열의 가장자리에서 평균값을 바이어스하지 않습니까? 그리고 신호를 미러링하는 것이 데이터 용어 수 측면에서 어떻게 도움이됩니까? 32 개의 데이터 포인트와 4 또는 5의 창 크기에 대해 프로세스가 수행되는 방법을 보여주는 여기에 대한 간단한 자습서가 있습니까?

2
스무딩 된 데이터 세트가 원래 데이터 세트와 동일한 길이를 갖도록하려면 엔드 포인트에서 데이터를 "메이크"해야합니다. 해당 데이터를 만드는 방법에 대한 선택은 어떤 식 으로든 평균에 치우칩니다. 범위를 벗어난 데이터를 실제 데이터 세트의 미러로 취급하면 (즉, 샘플 N + 1이 N-1, N + 2 = N-2 등과 같다고 가정 할 때) 0 또는 0이 아닌 반복을 가정하면 모든 주파수가 끝에서 롤오프되는 것처럼 보일 것입니다.
Russell Borogove

8

Junuxx의 좋은 답변 외에도 몇 가지 메모를하고 싶습니다.

  • 스무딩은 필터링과 관련이 있습니다 (불행히도 모호한 Wikipedia article )-속성에 따라 더 매끄럽게 선택해야합니다.

  • 내가 가장 좋아하는 것 중 하나는 중앙값 필터 입니다. 이것은 비선형 필터의 예입니다. 흥미로운 특성이 있으며 "가장자리"를 유지하며 큰 소음에서도 매우 견고합니다.

  • 모델이 있다면 신호가 칼만 필터의 동작 방식을 살펴볼 가치가 있습니다. 평활화는 실제로 관측치에 기반한 신호의 베이지안 최대 우도 추정입니다.


4

평활화는 주변 샘플 간의 관계를 변경하기 위해 주변 샘플의 정보를 사용함을 의미합니다. 유한 벡터의 경우 끝에는 한쪽에 인접한 정보가 없습니다. 선택 사항은 다음과 같습니다. 끝을 매끄럽게 / 필터링하지 않고, 더 짧은 결과로 매끄럽게 된 벡터를 받아들이고, 데이터를 만들어 매끄럽게 (매끄러운 예측의 정확도 / 유용성에 따라 다름) 또는 다른 비대칭 평활 커널을 사용합니다. 끝 (어쨌든 신호의 정보 내용이 짧아짐).


3

다양한 길이의 탭에 대해 이동 평균 필터를 부드럽게하기위한 전체 MATLAB 코드를 찾을 수 있습니다. www.gaussianwaves.com/2010/11/moving-average-filter-ma-filter-2/


1

다른 사람들은 당신이 부드럽게 하는 방법 을 언급했습니다. 평활화가 작동 하는지 .

신호를 올바르게 오버 샘플링하면 신호마다 샘플마다 다르지 않으며 (샘플 = 시점, 픽셀 등) 전반적으로 매끄럽게 보일 것으로 예상됩니다. 다시 말해, 신호에는 고주파수, 즉 샘플링 속도와 비슷한 속도로 변화하는 신호 성분이 거의 포함되지 않습니다.

그러나 측정은 종종 노이즈에 의해 손상됩니다. 첫 번째 근사에서는 일반적으로 평균 0과 신호 위에 단순히 추가되는 특정 표준 편차를 갖는 가우스 분포를 따르는 잡음을 고려합니다.

신호의 노이즈를 줄이려면 일반적으로 다음과 같은 4 가지 가정을 가정합니다. 노이즈는 임의적이며 샘플간에 상관되지 않으며 평균이 0이며 신호가 충분히 오버 샘플링됩니다. 이러한 가정으로 슬라이딩 평균 필터를 사용할 수 있습니다.

예를 들어 3 개의 연속 샘플을 고려하십시오. 신호의 오버 샘플링이 매우 높기 때문에 기본 신호는 선형으로 변하는 것으로 간주 될 수 있습니다. 즉, 세 샘플의 신호 평균이 중간 샘플의 실제 신호와 같습니다. 반대로, 노이즈는 평균이 0이며 상관이 없으므로 평균은 0이되어야합니다. 따라서 3 샘플 슬라이딩 평균 필터를 적용 할 수 있습니다. 여기서 각 샘플을 자신과 인접한 두 이웃 사이의 평균으로 바꿉니다.

물론, 우리가 창을 크게 만들수록 노이즈는 평균 0에 가깝지만 실제 신호의 선형성에 대한 가정은 적습니다. 따라서 우리는 절충해야합니다. 두 세계를 최대한 활용하는 방법 중 하나는 가중 평균을 사용하는 것입니다. 여기서 가중 평균을 사용하면 더 작은 샘플에 더 작은 가중치를 부여 할 수 있습니다. 인수.

가중치를 적용하는 방법은 노이즈, 신호 및 계산 효율성에 따라 달라지며 물론 노이즈 제거와 신호 절단 간의 균형에 따라 달라집니다.

지난 몇 년 동안 가변 필터 창 (이방성 확산)을 사용하는 스무딩 구성표 또는 실제로 창을 사용하지 않는 구성표를 설계하는 등 네 가지 가정 중 일부를 완화 할 수 있도록 많은 작업이 수행되었습니다. 전혀 (비 국가적 수단).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.