분류 전체보기 268

[디지털영상처리] Spatial Filtering (1)

필터 개요 디지털 영상 처리 관점에서 필터(Fliter)는 이미지의 특정 정보를 강조하거나, 불필요한 정보를 제거하여 이미지의 품질을 개선하는 데 사용되는 기술이나 알고리즘을 의미한다. 우리가 스마트폰으로 사진을 찍을 때 사용하는 카메라 어플도 필터의 일종이다. 예를 들어, 이미지의 전반적인 색온도를 증가시키면 따뜻한 느낌으로 변한다. 이러한 필터는 공간적 필터와 주파수 필터(Frequency Filter)로 나눌 수 있는데, 이번 시간에는 공간적 필터의 일종인 선형 필터 중 합성곱(Convolution)과 상관분석(Correlation)에 대해 알아보자. 본문 공간 필터와 Corrleation, Convolution 공간 필터(Spatial Filter)는 이미지의 각 픽셀과 그 주변 픽셀들에 수학적 ..

[마이크로프로세서] ATmega 128 디지털 입출력 제어 (3)

본문 FND 제어 이번 시간에는 FND(Flexible Numeric Display)를 조작해 보는 시간을 가지도록 해 보자. 7-segments로도 알려진 FND는 LED의 어느 단자를 공통 단자로 사용하느냐에 따라 Common Anode와 Common Cathode로 나뉜다. Common Anode는 모든 LED의 Anode가 공통으로 연결되어 있어, LED를 점등시키려면 해당 LED의 Cathode에 GND를 공급해야 한다. 반면 Common Cathode는 모든 LED의 Cathode의 Cathode가 공통으로 연결되어 있어, LED를 점등시키려면 해당 LED의 Anode에 전압을 공급해야 한다. J-KIT-128-1의 경우 공동 음극형으로 설계되어 있다. FND의 구동 방식은 모든 LED 제어 ..

[Python] PDF 텍스트 추출

PDF 텍스트 추출 개요 대학교에서 하는 수업들은 대게 PDF로 진행한다. 그래서 해당 내용을 정리할 때 PDF에 있는 텍스트 내용을 추출하면 편한 경우가 많다. 구글에 PDF 텍스트 추출을 검색하면 다양한 플랫폼이 나오지만, 직접 커스터마이징을 하고 싶어 파이썬으로 구현해 보았다. 본문 PyPDF2 파이썬에서는 Python으로 작성된 PDF 파일을 다루기 위한 라이브러리다. 이 라이브러리를 사용하면 PDF 파일을 읽고, 쓰고, 분할하는 등 다양한 작업을 수행할 수 있다. 이번 시간에는 파일을 읽는 것이 목적이므로 관련 함수인 PdfReader에 대해 알아보자. 일반적으로 PdfReader는 페이지 수 얻기, 개별 페이지 접근 등 다양한 읽기가 가능하다. 아래는 그 예제이므로 참고하자. # PDF 파일 ..

Language/Python 2023.10.31

[마이크로프로세서] ATmega 128 디지털 입출력 제어 (2)

본문 LED와 스위치 제어 이론 지난 시간에 배운 입출력 포트를 레지스터로 제어하여 LED를 점등해 보자. 일단 J-KIT-128-1의 회로도를 살펴보면, LED가 PORTA와 연결되어 있음을 알 수 있다. 또한 LED가 LED의 양극이 MCU와 연결되어 있다는 것을 확인할 수 있다. 이는 Current Source 방식을 채용하고 있다는 것을 의미한다. 이 방식은 핀의 출력이 1일 때 LED가 점등된다. 실습을 진행하기 위해선 핀당 허용 전류를 확인하고, 저항을 선택하는 과정이 필요하나 J-KIT-128은 이미 모듈화가 되어 있어 생략해도 된다. 그리고 LED 점등 시 추가적인 제어를 위해 스위치를 사용한다. 스위치 1은 PORTE의 4번 핀과 연결되어 있고, 스위치 2는 PORTE의 5번 핀과 연결되..

[디지털영상처리] Histogram Processing (2)

본문 Local Histogram Processing 히스토그램 매칭을 사용하면 특정 경우에 이미지의 대비가 부족해질 수 있다. 예를 들어, 위 그림의 다섯 개의 검은색 네모 안의 영역처럼 밝기가 낮아 세부 내용을 확인하기 어려울 때가 있다. 이러한 문제를 해결하기 위해 히스토그램 평활화를 적용해 보면, 영상의 대비는 향상되지만, 특정 계급에 픽셀 값이 과도하게 집중될 수 있다. 이런 현상은 원활한 영상 처리에 방해가 된다. 영상 처리에서 전역적인 처리 방법이 아닌, 영상의 각 지역별로 다르게 처리를 하고 싶을 때 지역 히스토그램 처리(Local Histogram Processing) 기법이 필요하게 된다. 이 방법은 영상의 각 부분별로 히스토그램 평활화나 조정을 수행하여, 그 지역의 세부적인 특성을 개..

[디지털영상처리] Histogram Processing (1)

히스토그램 처리 개요 히스토그램 평활화는 이미지의 전반적인 대비를 개선하기 위해 사용되는 방법이라고 지난 시간에 공부하였다. 하지만, 특정 밝기 계급에 픽셀이 지나치게 집중되어 있을 때, 이 방식은 몇 가지 문제점을 초래할 수 있다. 예를 들면, 평활화 후의 이미지에서 나머지 계급의 세부 정보가 손실되거나, 비자연스러운 노이즈나 패턴이 발생할 수 있다. 이러한 한계를 극복하기 위한 방법으로서 지역 히스토그램 처리 방법을 공부해 보겠다. 그리고 이를 이해하기 위해 히스토그램 매칭 또한 공부해 보도록 하겠다. 히스토그램 매칭(Histogram Matching)은 원하는 히스토그램 분포를 가진 참조 이미지를 사용하여, 타겟 이미지의 분포를 조정하는 방법이다. 반면, 지역 히스토그램 처리(Local Histog..

[마이크로프로세서] ATmega 128 디지털 입출력 제어

디지털 입출력 개요 지난 시간에 ATmega 128에 다양한 입출력 포트를 제어할 수 있다고 배웠었다. 이번 시간에는 범용 입출력 포트의 LED 기능을 이용해 점등해 보는 시간을 가지도록 해보자. 필자는 ATmega 128을 CPU로 장착한 JKit-128을 기준으로 설명하겠다. 본문 범용 입출력 포트 데이터 메모리에는 범용 레지스터 영역, I/O 레지스터 영역, 확장 I/O 레지스터 영역, SRAM 영역으로 나뉜다고 했었다. 이중 8비트의 입출력은 PA~PF 6개, 5비트의 입출력 포트는 PG 1개다. 범용으로 사용될 경우 읽기, 수정, 쓰기 기능을 수행할 수 있는데, 이는 포트를 비트 단위로 입/출력으로 자유롭게 설정 가능함을 의미한다. 이러한 기능의 제어는 I/O 레지스터로 설정한다. 물론 해당 제..

[디지털영상처리] Histogram Equalization (2)

본문 Histogram Equalization 히스토그램 평활화(Histogram Equalization)는 이미지의 밝기 분포를 균등하게 재분배함으로써 대비를 개선하는 기법이다. 이 과정에서 각 픽셀의 밝기 값을 조정하되, 이미지의 해상도는 그대로 유지한다. 따라서, 원본 이미지의 모든 픽셀은 보존되며, 그저 픽셀들의 밝기가 재조정되어 이미지의 대비와 세부 정보가 강화된다. 이를 수식으로 나타내면 다음과 같다. 따라서 히스토그램 평활화의 목표는 가능한 어떤 이미지라도 모든 밝기 레벨을 동적 범위(이미지에서 나타날 수 있는 최소 밝기와 최대 밝기 사이의 범위) 내에서 균등하게 사용하여, 이미지의 대비를 개선하는 것이다. 이 과정에서 원하지 않는 노이즈와 같은 아티팩트(Artifacts)들이 생길 수 있고..

[디지털영상처리] Histogram Equalization (1)

히스토그램 평활화 개요 히스토그램(Histogram)은 데이터의 분포를 그래프 형태로 시각화한 것이다. 이는 데이터 집합의 각 부분 또는 값의 빈도수를 보여주며, x축(계급, 카테고리)과 y축(빈도)으로 이루어져 있다. 히스토그램은 데이터의 형태, 중심, 분포, 변동, 이상치 등을 빠르게 파악하는 데 유용하다. 디지털 영상 처리에서 히스토그램은 각 픽셀 값이 얼마나 자주 등장하는지를 표현한다. 즉, x축으로는 이미지의 각 픽셀 밝기를, y축으로는 픽셀 수를 표현한다. 이미지 f(x, y) 함수를 정규화되지 않은 히스토그램으로 표현하면 다음과 같다. 여기서 rk는 k번째 계급을 의미하고, nk는 f(x, y)에서의 픽셀 수를 의미한다. 이 형태의 히스토그램은 이미지에서 각 밝기 레벨의 빈도수를 직접적으로 ..

[마이크로프로세서] ATmega 128 구조

ATmega 128 구조개요  지난 시간에 ATmega 128에 대한 대략적인 개요를 파악했었다. 이번 시간에는 ATmega 128의 CPU와 메모리 구조를 파악해 보는 시간을 가지도록 해보자. 시작하기 앞서 ATmega 128은 프로그램(SRAM)과 데이터(FLASH, EEPROM)가 분리되어 있으므로 Harvard 구조를 채택하고 있다는 점 알아두자. 그리고, 해당 구성요소들은 컴퓨터 구조 시간에서 한 번씩 다뤘던 내용이므로, 헷갈린다면 해당 게시글들을 확인해 보자.본문CPU 구조  ATmega 128의 CPU 구조다. 여기서 ALU를 포함해 범용 레지스터(General Purpose Register), 상태 제어 레지스터(Status and Control), 프로그램 카운터, 플래시 메모리, 명령 ..