일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- Binary
- APP
- Pointer
- Gradient
- edge
- SERIAL
- mfc
- Read
- Encapusulation
- Gaussian
- Unity
- Android
- compare
- UNO
- c++
- wpf
- Contour
- sensor
- subpixel
- atmega328
- aduino
- file access
- public
- memory
- Class
- stream
- flutter
- parameter
- Filtering
- digitalRead
- Today
- Total
목록분류 전체보기 (351)
폴크(FOLC)

Wavelet Denoising은 신호의 주파수와 시간 정보를 동시에 고려하여 노이즈를 제거하는 고급 기법- 특히 경계(에지)를 보존하면서 노이즈를 억제하는 데 효과적이며, 의료 신호, 이미지, 음향 신호, 과학 데이터 등에 널리 사용됩니다.Wavelet Denoising은 다음 세 단계로 수행됩니다:1 단계 : Wavelet Transform: 입력 신호를 다중 해상도(다양한 주파수)로 분해.2 단계 : Thresholding: 노이즈가 주로 포함된 세부 계수(detail coefficients)에 임계값을 적용해 제거.3 단계 : Inverse Transform: 노이즈가 제거된 계수를 기반으로 신호를 복원.1D Soft Thresholding: 예제#include #include #include..

Elliptic 필터(= Cauer filter)는 가장 급격한 주파수 전이 특성을 가지는 IIR 필터입니다. 동일한 필터 스펙(통과대역, 저지대역, ripple, 차단 감쇠)을 만족시키는 필터 중 **가장 낮은 차수(order)**로 구현 가능- 실시간 DSP, 고정밀 신호 처리, 자원 제약 환경 등에 매우 유리합니다. Elliptic Filter란?통과대역과 저지대역 모두에 ripple이 존재.**Elliptic 함수 (Jacobian elliptic function)**을 이용해 설계.Butterworth, Chebyshev보다 더 적은 차수로 동일 성능 구현 가능.설계 파라미터요소설명Order (차수)필터의 sharpness 및 정확도 결정Passband ripple (rpr_prp)통과대역에서..

Chebyshev 필터는 클래식 IIR 필터 설계법 중 하나로, 주어진 사양(통과대역 ripple, 차단대역 감쇠, 전이대역 너비)을 만족시키면서 빠른 롤오프(roll-off)를 제공하는 고성능 필터- 특히 Butterworth 필터보다 짧은 전이대역을 갖지만, **통과대역 또는 저지대역에 ripple(잔류진동)**을 허용합니다. Chebyshev 필터- Chebyshev Type I (1형)통과대역에 ripple, 저지대역은 단조롭게 감쇠.롤오프가 Butterworth보다 빠름.- Chebyshev Type II (2형)저지대역에 ripple, 통과대역은 평탄함.Type I보다 덜 사용됨 (주로 특수 목적). 주파수 응답 (Type I) Tn : n차 Chebyshev 다항식ωc : 컷오프 주파수ϵ..

Butterworth Filter매끄럽고 평탄한 주파수 응답 (통과대역에서 ripple이 없음).필터 차수가 증가할수록 롤오프가 더 급격해짐.특징응답이 가장 "부드러운" 필터급격한 에지 응답은 부족하지만 안정적주파수 응답 (저역통과 기준) 예제#include #include class ButterworthLPF { public: ButterworthLPF(double sampleRate, double cutoffFreq) { double fr = cutoffFreq / sampleRate; double ita = 1.0 / std::tan(M_PI * fr); double q = std::sqrt(2.0); // Q factor for 2nd-or..
Band-pass Filter (대역통과 필터)특정 주파수 범위만 통과시키고, 그 이외의 저주파와 고주파는 차단합니다.예: 515Hz만 통과 → 05Hz, 15Hz~ 이상은 제거용도특정 이벤트나 센서가 생성하는 주파수만 추출하고 싶을 때잡음이 저역 또는 고역에 집중되어 있을 때 Notch Filter (대역저지 필터)특정 좁은 주파수 대역만 제거하고 나머지는 통과시킵니다.예: 60Hz 전력 노이즈 제거 (Line frequency)용도주기적이고 명확한 간섭 신호(기계 진동, 전력 간섭 등) 제거신호 구조를 최대한 유지하면서 잡음만 제거하고자 할 때 예제#include #include #include const double PI = 3.14159265358979323846; // 간단한 IIR 2차 ..

Wiener Filter- 노이즈를 억제하면서 신호를 왜곡 없이 보존하는 것이 목표.- 선형 필터 중 평균 제곱 오차(Mean Square Error, MSE)를 최소화함.동작 방식- 입력 x[n]=s[n]+n[n] (신호 + 잡음)- 출력 y[n]는 다음 조건을 만족하도록 설계:- 주파수 영역에서의 형태 (1D 버전):S(f) : 신호 파워 스펙트럼N(f) : 노이즈 파워 스펙트럼 간단한 1D Wiener Filter 구현 로직핵심 공식 (시간영역 근사)μ : 로컬 윈도우 평균σ2 : 로컬 신호 분산ν2 : 노이즈 추정 분산 (전역 평균 또는 사전 정보) 예제#include #include #include #include #include // 평균 계산 함수 double mean(const s..
윈도우 내 값들을 오름차순 정렬.특정 순위(rank) 또는 백분위(percentile)에 해당하는 값을 반환.- Percentile filter: 0~100 중 하나의 백분위값 (e.g., 20%)- Rank filter: 윈도우 내 인덱스로 직접 지정 (e.g., 3번째 작은 값)입력: [8, 3, 4, 2, 10], 커널 size = 5정렬: [2, 3, 4, 8, 10]20% percentile → 1번째 값 → 350% percentile → 중앙값 → 480% percentile → 4번째 값 → 8 Median보다 더 다양한 filtering 특성이 가능특정 방향성 있는 노이즈 억제 가능 (e.g. 아래쪽 스파이크 제거) 예제#include #include #include #include..
Savitzky-Golay 필터는 신호 처리에서 널리 사용되는 데이터 평활화 기법으로, 특히 노이즈를 줄이면서 신호의 주요 특성(예: 피크, 경향선 등)을 보존해야 할 때 효과적입니다.이동 윈도우 내의 다항 회귀를 통해 중심값을 재계산하여 평활화하는 방법입니다. 보통 단순 이동 평균은 신호를 과도하게 평탄화하여 중요한 피크나 변화를 손실할 수 있는데, 이 필터는 신호의 형상 보존에 강점이 있습니다.원리- 주어진 윈도우 크기와 다항 차수를 바탕으로, 해당 구간의 데이터를 최소자승법(Least Squares) 으로 다항식에 맞추고 중심값을 계산합니다.- 이는 선형 컨볼루션처럼 미리 계산된 계수를 사용하여 구현할 수 있습니다.파라미터- window size (odd integer): 적용할 데이터 포인트의 개..
Knife-edge Method (Gaussian Profile Estimation) 은 광학 시스템의 Point Spread Function(PSF)을 정량적으로 평가하는 데 사용되는 대표적인 간접 측정 방법 중 하나입니다. 여기서 PSF는 시스템이 한 점 광원을 어떻게 퍼뜨리는지를 나타내는 함수이며, 이는 시스템의 해상도와 직결됩니다.기본 원리- Knife-edge method는 광원이 일정한 에너지를 가진 빔(보통 Gaussian 분포를 가짐)을 생성할 때, 그 빔의 일부를 knife(날카로운 가장자리, 예: 블레이드)로 차단하고, detector(카메라, 포토다이오드 등)로 전달되는 빛의 세기를 측정하는 방식입니다.- 측정된 신호는 광원의 **적분된 intensity profile (Edge Sp..

Total Variation (TV)과 Sparsity 기반의 영상 복원 혹은 영상 복구 알고리즘은 잡음 제거, 압축 센싱 복원, 이미지 인페인팅 등 다양한 영상 처리 분야에서 널리 활용됩니다.Total Variation (TV) RegularizationTV 정규화는 영상의 급격한 변화(예: 에지)는 유지하면서, 잡음과 같은 고주파 성분을 억제하는 정규화 방법입니다. 주로 isotropic TV 또는 anisotropic TV로 나뉩니다이는 영상의 gradient의 L1 norm을 최소화하여 결과적으로 평탄한 영역은 부드럽게 만들고, edge는 보존합니다. Sparsity ConstraintSparsity는 이미지가 특정 basis(예: Wavelet, DCT 등)에서 희소 표현이 가능하다는 가정을 활..
Bayesian Edge Detection for 1D Signal은 확률 기반의 접근법을 사용하여 신호 내 변화점(에지)을 탐지하는 알고리즘입니다. 신호에 포함된 노이즈를 통계적으로 고려하면서 에지를 더 정밀하게 검출할 수 있다는 장점이 있습니다. Bayesian Edge Detection- 에지는 신호의 통계적 특성이 바뀌는 지점으로 간주됩니다.- 신호의 각 세그먼트는 고유한 분포(예: 정규 분포)를 갖는다고 가정합니다.- 주어진 신호의 구간을 두 개의 구간으로 나누었을 때,= 이 구간들이 각각 서로 다른 분포에서 나왔을 확률이 높은 위치가 에지로 판단됩니다.= 이 확률을 계산하기 위해 Bayes Rule과 **사후 확률(posteriors)**을 사용합니다. 알고리즘 수행 순서1. 입력 신호를 반복..
Phase-Based Edge Detection이미지의 edge는 일반적으로 위상(phase)의 급격한 변화에서 발생합니다. 특히 Fourier나 Hilbert Transform을 통해 구한 위상 정보를 분석하면 에지 위치를 subpixel 정밀도로 파악할 수 있습니다.Fourier Transform 기반 방식- 이미지를 주파수 영역으로 변환 (FFT)- 특정 방향의 주파수 성분을 필터링- 위상 정보 추출- 위상 변화가 급격한 부분을 에지로 판단Hilbert Transform 기반 방식 - Hilbert Transform은 1D 시그널에서 즉각적인 위상(instantaneous phase) 추정에 사용됩니다. - 이미지를 방향성 필터와 함께 처리하여 각 방향의 위상 응답을 얻고 에지를 검출합니다. Hil..
Gaussian Smoothing노이즈를 제거하여 edge 검출의 안정성을 향상시키기 위한 가우시안 필터 적용.1차 미분 (1st Derivative)프로파일의 기울기를 계산하여 edge 후보 위치를 검출.Zero-Crossing 위치 검출1차 미분 결과가 양→음 또는 음→양으로 바뀌는 지점을 zero-crossing으로 판단.Subpixel Interpolation Zero-crossing 근처의 값을 가지고 2차 (Quadratic) 보간을 통해 subpixel 수준의 edge 위치를 계산. 예제#include #include #include // Gaussian smoothing (1D) std::vector gaussianSmooth(const std::vector& input, double..
1D 신호에서 자동 CD 측정을 위한 최적 점수 조합 기반 알고리즘- Gradient Magnitude (강도)- Sharpness (2차 도함수 기반 집중도)- Noise Contrast Ratio (SNR 기반 신뢰도)- Pair Symmetry (± gradient 쌍의 균형)이를 바탕으로 가장 신뢰도 높은 edge 쌍을 찾아 subpixel 정밀도로 CD를 측정한다. 요약이미지 로딩 → 선택 row 프로파일 추출 → 1D gradient 및 score 계산 → subpixel edge 위치 보간 + 점수 평가 → 양/음 edge 쌍 찾기 → 점수 높은 쌍 선택 → CD 계산 및 출력 예제#include #include #include #include #include using namesp..
1차 중앙 차분(Central Difference) - 3개의 샘플만을 이용해서 처리고차 차분 기반 수치 미분- 3개 / 5개 / 7개 / Forward / Backward 등 정규화 마스크 기반 미분 (Sobel/Prewitt/Scharr 등)- Sobel / Prewitt / Scharr / Roberts 함수 피팅 기반 (Local Regression / Polynomial)- Savitzky–Golay 미분 필터 / Local Quadratic Fitting / Spline Derivatives 미분 필터 함수 기반 (선형 시스템 해석 기반)- Gaussian Derivative (DoG) / Difference of Gaussians (DoG) / Derivative of Gaussian Ker..
Gradient 기반 신뢰도 스코어링(gradient-based edge confidence scoring)**은 검출된 edge가 진짜 edge인지 아닌지를 판단하거나 subpixel edge의 신뢰도를 정량화할 때 매우 유용한 기법으로, CD 측정, 자동 edge 선택, 노이즈 필터링 등에 적용된다.Gradient magnitude : edge의 "강도(strength)" 또는 "확신도(confidence)"로 해석 가능 강한 edge : 큰 gradient → 확실한 밝기 변화 → 진짜 edge일 가능성 높음 약한 edge : 작은 gradient → noise, blur, 혹은 경계 아님 Confidence = |I(x+1) - I(x-1)| / 2 = |Gradient| 스코어링 기준값 예시≥..
1차 미분(gradient) 을 계산하는 중앙차분(Central Difference) 방식으로, edge를 찾는 핵심 수학적 기반 중 하나이며, 이해하면 edge 검출의 본질을 훨씬 명확하게 구현이 가능하다.수식은 아래와 같다.gradient ≈ (I(x+1) - I(x-1)) / 2 I(x+1) = 오른쪽 이웃 픽셀의 intensityI(x-1) = 왼쪽 이웃 픽셀의 intensity float gradient = 0.5f * (g_next - g_prev);
1D gradient 기반 edge 검출에 이어, parabola 보간을 이용한 subpixel 정밀도 위치 추정, 그리고 gradient 방향(양/음)을 통한 edge 방향성 분석까지 포함하는 정밀한 CD 측정 알고리즘 예제#include #include using namespace std; using namespace cv; enum class EdgeDirection { POSITIVE, NEGATIVE }; struct EdgePoint { float position; // subpixel 위치 EdgeDirection direction; // gradient 방향 }; // 파라볼라 보간으로 subpixel 위치 추정 float parabolaSu..
edge 방향을 탐지하는 것은 **gradient의 부호(sign)**를 기반으로 각 edge가 어떤 밝기 변화 방향으로 이동하는지를 판별하는 것입니다. 이는 **양의 gradient (dark → bright)**와 **음의 gradient (bright → dark)**를 구분함으로써, Line & Space 구조의 시작점/끝점, 혹은 선폭(CD) 측정의 정확한 기준 edge 구분이 가능하다개념: gradient의 부호로 edge 방향 구분G(x)=I(x+1)−I(x−1)G(x) = I(x+1) - I(x-1)G(x)=I(x+1)−I(x−1)G(x)>0G(x) > 0G(x)>0: 양의 gradient → 밝아지는 edge (dark → bright)G(x)G(x)0: 음의 gradient → 어두워지..
CD 측정 같은 선형 구조 분석에는 오히려 1D 프로파일 기반 edge 추출이 정확하고 제어 가능하며, subpixel 정밀도를 높일 수 있다.1D based edge detection - 한 줄의 intensity profile에서 경계점을 찾는 방식 (예: 특정 row 또는 column)- Subpixel 보간, 잡음 억제 용이, 정밀도 향상, 구조 선형성 이용 가능 - Line & Space 구조, mask/wafer CD 측정, 전자현미경 이미지 등 예제#include #include using namespace cv; using namespace std; // 1D derivative 계산 후 subpixel 보간으로 edge 위치 추정 vector findEdges1DWithSubpixe..