노이즈 감소 및 예측
노이즈는 이미지의 시각적 품질을 저하시킬 수 있으며, 특정 처리 작업(임계값 적용, 하이 패스 필터링)은 노이즈를 허용 불가능한 수준으로 강조합니다. 캡처된 이미지에는 항상 노이즈가 있습니다(픽셀 값이 실제 강도 주변으로 변동되는 라이브 이미지에서 가장 잘 관찰할 수 있음). 8비트의 정밀도로 캡처할 때, 노이즈 레벨은 일반적으로 약 3 ~ 5 회색조 값에 달합니다. 노이즈는 다음과 같은 몇 가지 형태로 구분할 수 있습니다.
- 부가적: 노이즈 진폭이 이미지 내용과 비례하지 않음
- 곱셈적: 노이즈 진폭이 국소적 강도에 비례함
- 균일: 노이즈 진폭이 0을 중심으로 한 고른 분포를 따름
- 임펄스: 노이즈 진폭이 무한대임
임펄스 노이즈는 "점잡음(salt and pepper)" 효과를 일으키며, 균일한 노이즈는 잘 섞입니다.

균일 및 임펄스 노이즈를 줄여주지만 에지가 흐려집니다.
노이즈와 실제 신호 변화를 구분할 수 없으므로, 항상 신호의 일부를 망칩니다.
인접 픽셀 값 사이의 상관관계를 사용하여 컨볼루션 또는 중앙값 필터링을 수행합니다.
- 컨볼루션은 각 픽셀의 값을 이웃의 조합으로 대체함으로써 국소적 평균화를 달성합니다. 균일 노이즈를 줄이려면 선형 필터링이 권장됩니다. 이를 적용하면 에지가 흐려지는 경향이 있음에 유의하십시오.
로우 패스 필터링을 통한 균일 노이즈 감소
- 중앙값 필터링은 각 픽셀을 픽셀 이웃(3x3 이웃에서 5번째로 큰 값)의 중앙값으로 대체합니다. 이는 임펄스 노이즈를 줄여주며 선명도는 유지합니다.

시간 노이즈 감소는 시간에 걸쳐 개별 픽셀의 연속적인 값을 결합함으로써 달성됩니다. EasyImage는 재귀 평균법과 이동 평균법을 구현합니다.
EasyImage는 몇 개의 이미지를 사용하여 노이즈를 최소화하는 방법을 세 가지 제공합니다.
- 시간 평균: 아래 그림에 나온 것처럼 표준 산술 연산을 사용하여 단순히 N개의 이미지를 축적하고 그 평균을 냅니다. N회의 캡처 이후 평균값을 사용하여 노이즈가 제거된 이미지를 생성합니다. 노이즈는 프레임마다 변화하지만 신호는 변화 없이 유지되므로, 같은(정지) 장면의 이미지 여러 개가 있다면 노이즈를 신호에서 분리할 수 있습니다.
N회의 캡처 후에 하나의 노이즈 제거 이미지를 생성하는 데 따른 유일한 단점은 빠른 디스플레이 갱신이 불가능하다는 것입니다.
단순 평균
- 시간 이동 평균: 최근 N개 이미지를 축적하고 새로운 이미지가 캡처될 때마다 연산 시간이 N에 의존하지 않는 방식으로 노이즈 제거 이미지를 업데이트합니다. 전체 프로세스는 EMovingAverage에 의해 처리됩니다. 이 방식의 단점은 노이즈가 있는 이미지가 서로 합쳐진다는 것입니다.
이동 평균
- 시간 재귀 평균: EasyImage::.RecursiveAverage를 사용하여 노이즈가 있는 이미지와 이전에 노이즈가 제거된 이미지를 결합합니다.
재귀 평균
재귀 평균법
이는 시간적 통합에 의한 노이즈 감소의 잘 알려진 프로세스입니다. 원리는 선형 결합을 사용하여 노이즈가 없는 이미지를 노이즈가 있는 원시 라이브 이미지 스트림과 혼합함으로써 지속적으로 업데이트하는 것입니다. 알고리즘으로 보면 다음과 같이 표현됩니다.
DSTN=a*Src+(1-a)*DstN-1
여기서 a는 혼합 계수입니다. 이 계수의 값은 지정된 노이즈 감소 비율이 달성되도록 조정할 수 있습니다.
이 절차는 정지 이미지에 적용할 때는 효과적이지만, 이동 이미지에서는 궤적 효과를 일으킵니다. 노이즈 감소 비율이 클수록 궤적 효과도 심해집니다. 이를 해결하려면 혼합 프로세스에 비선형을 도입할 수 있습니다. 연속적인 이미지 사이의 작은 회색조 값 변동은 일반적으로 노이즈이지만, 큰 변동은 이미지 변경에 해당합니다.
EasyImage::.RecursiveAverage는 이러한 관찰을 사용하고 작은 변동에 대해 더 강력한 노이즈 제거, 그리고 그 반대를 적용합니다. 이를 통해 정지 영역에서 노이즈를, 이동 영역에서 궤적을 제거합니다.
최적의 성능을 달성하려면, EasyImage::.SetRecursiveAverageLUT 함수를 사용하여 비선형을 한 번 사전 계산해야 합니다.
참고: EasyImage::.RecursiveAverage 메서드를 최초로 호출하기 전에, 16비트 작업 이미지를 지워야 합니다(모든 픽셀 값을 0으로 설정).

노이즈의 양을 예측하려면 둘 이상의 연속적인 이미지가 필요합니다. 가장 단순한 모드에서는 노이즈가 있는 이미지 두 개가 비교됩니다. (다른 모드도 사용 가능함: 노이즈가 없는 이미지가 있다면, 노이즈가 있는 이미지와 비교되며, 노이즈 없는 이미지는 시간 평균을 통해서도 만들 수 있음). 제곱평균제곱근 진폭 및 신호 대 잡음비를 계산합니다.
- EasyImage::.RmsNoise는 지정된 이미지를 레퍼런스 이미지와 비교함으로써 노이즈의 제곱평균제곱근 진폭을 계산합니다. 이 함수는 플렉시블 마스크와 입력 마스크 인수를 지원합니다. 또한 BW8, BW16, C24 소스 이미지를 지원합니다.
레퍼런스 이미지는 노이즈가 없거나(노이즈 소스를 억제하여 확보), 지정된 이미지와 동일한 분포의 노이즈에 영향을 받는 것일 수 있습니다. - EasyImage::.SignalNoiseRatio는 지정된 이미지를 레퍼런스 이미지와 비교하여 dB단위의 신호대 잡음비를 계산합니다. 이 함수는 플렉시블 마스크와 입력 마스크 인수를 지원합니다. 또한 BW8, BW16, C24 소스 이미지를 지원합니다.
레퍼런스 이미지는 노이즈가 없거나(노이즈 소스를 억제하여 확보), 지정된 이미지와 동일한 분포의 노이즈에 영향을 받는 것일 수 있습니다.
신호 진폭은 제곱 픽셀 회색조 값의 합계입니다.
노이즈 진폭은 지정된 이미지와 레퍼런스 이미지의 픽셀 회색조 값 사이의 제곱 차의 합계입니다.