분류 전체보기 268

[디지털영상처리] Fourier Theory (2)

본문 Impulse Train 결국 우리가 다루는 이미지는 샘플링을 거친 것을 보는 것이다. 즉, 연속적인 실제 세계를 이산적인 픽셀로 변환한 것이므로, 이 과정에서 임펄스 열을 사용하여 모델링하는 과정이 필요하다. 이번 시간에는 이러한 임펄스 열에 푸리에 급수와 푸리에 변환을 적용하면 어떻게 되는지 알아보자. 다음과 같이 시간축 t에서 간격이 △T인 임펄스 열(Impulse Train)이 있다고 가정해 보자. 이를 이용해 푸리에 급수를 표현하면 다음과 같이 나타낼 수 있다. 여기서 푸리에 계수를 구해보면 모든 n에 대해 1/△T이 된다는 점을 이용하여 임펄스 열을 다음과 같이 표현할 수 있다. 이번에는 푸리에 변환을 적용해 보자. 아래 수식에 따라 푸리에 변환을 적용하면 주파수 u = n/△T일 때만 ..

[디지털영상처리] Fourier theory (1)

푸리에 이론 개요 이미지에서 주파수(Frequency)는 이미지의 공간적 변화가 얼마나 빠르게 발생하는지를 나타내는 척도다. 이미지에서 이것은 일반적으로 픽셀 간의 밝기 변화의 정도로 표현되며, 이는 이미지의 세부 사항과 가장자리의 고주파수 성분과, 부드러운 영역의 저주파수 성분으로 구분된다. 이번 시간에는 시간 도메인에서의 이미지가 아닌, 주파수 도메인에서 이미지를 다루기 위해 필요한 푸리에 변환 이론을 배워보도록 하자. 본문 푸리에 이론을 쓰는 이유 푸리에 이론(Fourier Theory)은 일반적으로 시간 영역에서 다루기 힘든 내용을 주파수 영역으로 넘겨서 해결할 때 사용한다. 예를 들어, 시간 도메인에서 이미지에 필터를 적용하는 컨볼루션은 각 입력 샘플에 대해 커널의 모든 값과 곱셈을 수행한 후,..

[마이크로프로세서] 타이머/카운터 (1)

타이머/카운터 개요 타이머/카운터(Timer/Counter)는 시간 관련 작업을 처리하고, 일정 시간 간격을 측정하거나, 특정 이벤트의 발생 횟수를 세는 데 사용된다. 이때 클럭의 주파수를 알면 클럭 주기를 알 수 있으므로, 타이머로 활용할 수 있다. 예를 들어, 3bit 타이머/카운터의 경우, 카운터의 상태가 111에서 000으로 변화할 때 오버플로우 인터럽트 플래그가 발생한다. 이때, MCU 내부 클럭을 사용하는 것을 타이머 모드, 외부 클럭 또는 외부 이벤트를 사용하는 것을 카운터 모드라고 한다. 이러한 타이머/카운터는 특정 작업 간의 시간 지연을 생성하고, 정확한 타이밍을 제공한다. 이전에 FND 혹은 LED를 제어할 때 주었던 delay는, 그 함수가 실행되는 시점에 모든 작업이 멈춘다. 이로 ..

[디지털영상처리] Image Sharpening (3)

Image Sharpening based on First-Order Derivatives and Summary 개요 이전까지 이미지 샤프닝을 위해 라플라시안과 같은 이차 미분 필터를 사용하거나, 원본 이미지로부터 LPF를 사용하여 흐릿한 이미지를 만든 다음 빼서 샤프닝 마스크를 만드는 Unsharp Masking을 사용하였다. 이차 미분을 이용한 방법은 세밀한 에지를 감지할 수 있으나, 노이즈에 민감하고, USM은 매개변수를 조절하여 샤프닝의 정도를 세밀하게 조정할 수 있으나, 계산 과정이 복잡하다는 단점이 있다. 이번 시간에는 수평과 수직 방향의 밝기 변화율을 측정하여 간단하고 빠른 계산을 보장하는 일차 미분을 이용한 샤프닝 필터에 대해 알아보도록 하겠다. 본문 원리 앞서 라플라시안을 설명할 때, Gr..

[디지털영상처리] Image Sharpening (2)

Unsharp Masking 개요 지난 시간에 배운 라플라시안 샤프닝 기법과 마찬가지로 오늘 배울 Unsharp Masking도 밝은 부분을 더 밝게 하고 어두운 부분을 더 어둡게 하여 이미지의 대비를 강조한다. 하지만 두 방법의 차이점은 Unsharp Masking이 원본 이미지를 블러 처리하여 생성된 흐릿한 이미지와 원본 이미지 사이의 차이를 이용한다는 점이다. 이 차이 정보를 원본 이미지에 다시 더해주어 세부 사항을 강조하고 이미지의 선명도를 향상한다. 본문 원리 다음과 같이 이미지의 경계 부분을 그래프로 그려보자. 지난 시간에도 다뤘지만, 기울기가 급격하게 변화하는 부분은 밝기가 변하는 지점으로, 경계가 명확해지는 곳이다. 이미지에 가우시안 필터, 평균 필터, 중앙값 필터 등의 블러 필터를 적용하..

[디지털영상처리] Image Sharpening (1)

Image Sharpening 개요 디지털 영상 처리에서 이미지 샤프닝(Image Sharpening)은 이미지의 에지나 세부 사항을 강조함으로써 대비를 높여 디테일을 뚜렷하게 만드는 선명도 향상 기법이다. 이 과정은 인간의 눈이 밝기가 급격히 변하는 경계 영역에서 가상의 밴드를 인지하게 되는 마하 효과(Mach Effect)를 통해 설명될 수 있다. 예를 들어, 경계가 분명한 이미지에서 밝기가 변하는 지점은 단위 계단 함수(Unit Step Function)와 유사하게 급격한 변화를 보인다. 그러나 인간의 시각 시스템은 실제로 에지 부근에서 대비를 과장하여 인지하기 때문에 실제와는 조금 다르게 느껴질 것이다. 즉, 인간의 눈은 이미지의 에지에서 밝은 부분을 더 밝게, 어두운 부분을 더 어둡게 보게 만들..

[디지털영상처리] Smoothing Spatial Filtering

Smoothing 개요 지난 시간에는 이미지에 Correlation를 이용해 필터를 씌우는 방법에 대해 배워봤다. 이번 시간에는 이를 이용해 이미지를 부드럽게 만드는 스무딩 필터에 대해 알아보자. 본문 Linear Smoothing Spatial Filter 스무딩 공간 필터(Smoothing Spatial Filter)는 이미지의 노이즈를 감소시키고, 세부 사항을 부드럽게 처리하여 전반적인 블러링(Blurring) 효과를 제공하는 데 사용된다. 이 필터는 이미지의 선명도를 다소 감소시키는 대신 노이즈를 줄이는 역할을 하며, 선형 필터와 비선형 필터로 나눌 수 있다. 이때 부드럽게 만드는 원리는 이미지의 작은 디테일들을 지우고, 지운 공간을 연결하는 것이다. 즉, 사라진 픽셀의 값을 가중치 필터를 이용하..

[유니티] VR setting with Google Cardboard (2)

VR 빌드 세팅 Edit -> Project Setting을 들어가 Player로 이동하자. 그리고 Resolution and Presentation을 클릭해 해상도를 설정하자. 먼저 Optimized Frame Pacing 기능을 끄자. 해당 기능은 프레임 속도의 편차를 줄이기 위해 프레임을 균등하게 분배해 부드러운 게임 플레이를 구현하는 기능이다. 하지만 VR에서는 이 기능이 오히려 성능 저하를 일으킬 수 있으므로 비활성화하는 것이 좋다. 이는 VR이 낮은 지연 시간과 빠른 반응 속도가 중요하다는 점에서 기인한다. 또한 기본 방향을 가로 왼쪽 또는 가로 오른쪽으로 설정하면 되는데, 일반적으로 VR 헤드셋은 두 눈으로 볼 때 자연스러운 가로 화면을 제공하기 때문이다. 이제 Others Settings로..

Game/Unity 2023.11.04

[마이크로프로세서] 인터럽트 개요

인터럽트 개요 개요 이전까지는 이벤트(프로그램이나 시스템 내에서 발생하는 특정한 상황이나 사용자의 액션)를 체크하기 위해 프로그램이 돌아가는 동안 이를 주기적으로 체크하는 방식을 사용했다. 예를 들어, 스위치를 눌러 왕복하고 있던 LED의 방향을 바꾸거나, FND의 출력 상태를 바꾸는 등의 작업이 해당된다. 이처럼 CPU가 주기적으로 이벤트를 확인하고 동작을 수행하는 것을 폴링(Polling)이라고 한다. 과연 이 방식이 효율적일까? 주기적으로 하드웨어 장치의 상태를 검사하며 변화가 있는지 확인하기 때문에, 프로그램의 흐름이 예측이 가능하며, 검사 시간과 간격을 프로그래머가 제어할 수 있다. 즉, 동기성을 갖고 있는 폴링 방식은 변화가 없을 때도 계속해서 상태를 검사하기 때문에 CPU 자원을 낭비하기 십..

[유니티] VR setting with Google Cardboard (1)

VR 세팅 개요 Google Cardboard와 Unity를 연동해 VR을 세팅하는 법에 대해 배워보자. 안드로이드 기준으로 SDK 세팅 -> 환경 세팅 -> 빌드 세팅으로 나뉜다. 이때 본인이 맥북을 따로 갖고 있는 것이 아니라면 안드로이드를 선택하는 것을 권장한다. 유니티를 IOS로 빌드할 때, 그 과정이 까다롭기 때문이다. 본문 SDK 설치 시작하기에 앞서, 원활한 디버깅을 위해 Android Studio의 SDK를 설치할 것이다. SDK는 Software Develpment Kit의 약자로서, 소프트웨어 기술자가 사용하여 특정한 응용 프로그램을 만들 수 있게 해주는 개발 도구의 집합이다. 해당 링크를 타고 들어가 안드로이드 스튜디오를 다운로드하여 주자. 안드로이드 스튜디오를 다운로드하였으면, To..

Game/Unity 2023.11.02