안녕하세요. 지난 포스팅의 Opencv 제대로 쓰기[2] 에서는 노트북 및 핸드폰 카메라로부터 영상을 불러오는 방법에 대해서 알아보았습니다. 오늘은 이 방법을 활용하여 불러온 외부 카메라 영상을 스크린샷을 저장하는 간단한 방법에 대해서 알아보겠습니다. 전체 코드는 아래의 깃허브 링크를 참조해주시길 바랍니다. skawngus1111/opencv-python-tutorial Contribute to skawngus1111/opencv-python-tutorial development by creating an account on GitHub. github.com 일단 여러분들 컴퓨터 키보드의 스크린샷을 저장하기 위해서 어떤 키를 보통 쓰시나요? 저는 보통 맥북이나 우분투 환경을 주로 쓰고 있는데, 우분투에서..
안녕하세요. 지난 포스팅의 디지털 영상 처리 - 선택적 필터링에서는 밴드차단 및 통과 필터, 그리고 노치 필터에 대해서 알아보았습니다. 오늘은 번외로 대부분의 프로그래밍 언어에서 구현되어 있는 고속 푸리에 변환(Fast Fourier Transform; FFT) 알고리즘을 보도록 하겠습니다. MATLAB에는 fft2, 파이썬의 넘파이에서는 np.fft.fft2로 구현이 되어있을 겁니다. 1. 2D DFT 분리성(Separability) 2D DFT는 각 차원에 따라서 수행하는 2개의 1D DFT로 분리될 수 있습니다. 일단, 다시 2D DFT를 상기하면 그 식은 아래와 같습니다. $$F(\mu, \nu) = \sum_{x = 0}^{M - 1}\sum_{y = 0}^{N - 1} f(x, y)e^{-2j..
안녕하세요. 지난 포스팅의 디지털 영상 처리 - 주파수 도메인을 이용한 영상 샤프닝에 이어서 오늘은 선택적 필터링(selective filtering)에 대해서 알아보겠습니다. 선택적 필터링은 크게 3가지로 각각 대역차단(band reject), 대역통과(band pass), 노치(notch) 필터로 나뉩니다. 1. 대역차단과 대역통과 필터 일단 대역차단 필터만 이해하면 대역통과 필터도 이해할 수 있기 때문에 대역차단 필터를 중심으로 이야기해보도록 하겠습니다. 대역차단 필터는 특정한 주파수 영역을 차단하는 필터링 방법입니다. 그리고 다들 예상하셨다싶이 대역차단 필터 역시 이상적, Butterworth, 가우스 필터를 기반으로 만들어집니다. 이를 수식적으로 나타내면 아래와 같습니다. 아마 기존의 저역 및 ..
안녕하세요. 지난 포스팅의 디지털 영상 처리 - 주파수 도메인 필터를 이용한 영상 스무딩 구현에서는 MATLAB을 이용해서 주파수 도메인을 이용하여 영상 스무딩을 적용해보았습니다. 다시 한번 말씀드리지만 이러한 관계가 성립하는 가장 기본적인 원리는 컨볼루션 정리입니다!! 오늘은 지난 포스팅에 이어서 주파수 도메인 필터를 이용해서 영상 샤프닝을 구현해보도록 하겠습니다. 전체 코드는 아래의 깃허브 링크를 참조해주시길 바랍니다. skawngus1111/DIP Digital Image Processing exercise&code. Contribute to skawngus1111/DIP development by creating an account on GitHub. github.com 사실 지난 포스팅과 크게 ..
안녕하세요. 지난 포스팅의 Opencv 제대로 쓰기[1]에서는 컴퓨터 내부에 있는 영상이나 동영상을 불러오는 방법에 대해서 정리했습니다. 이번 포스팅에서는 노트북이나 핸드폰의 카메라로부터 동영상을 불러오는 방법에 대해서 알아보겠습니다. 전체 코드는 아래의 깃허브 링크를 참조해주시길 바랍니다. skawngus1111/opencv-python-tutorial Contribute to skawngus1111/opencv-python-tutorial development by creating an account on GitHub. github.com 시작하기에 앞서 동영상을 불러오고 저장하는 핵심함수들에 대해서 간단하게 정리하고 넘어가도록 하겠습니다. cv2.VideoCapture() (int or str): ..
안녕하세요. 지난 포스팅의 디지털 영상 처리 - 주파수 도메인 필터를 이용한 영상 샤프닝 구현에 이어서 오늘은 영상 스무딩을 MATLAB으로 구현해보도록 하겠습니다. 전체 코드는 아래의 깃허브 링크에 있습니다. skawngus1111/DIP Digital Image Processing exercise&code. Contribute to skawngus1111/DIP development by creating an account on GitHub. github.com 주파수 도메인에서의 영상 스무딩을 다들 제대로 이해하셨다면 필터링 과정 자체는 다르지 않다는 것을 아실겁니다. 다른 점은 오직 어떤 마스크를 쓰느냐에 따라서 달라지죠. 그래서 저는 함수를 구현할 때, 저역 통과 필터링 하나의 함수에서 어떤 타..
안녕하세요. 지난 포스팅의 디지털 영상 처리 - 주파수 도메인 필터를 이용한 영상 스무딩에서는 주파수 도메인에서의 저주파 영역을 필터링함으로써 스무딩을 하였습니다. 이를 위해서 사용하는 대표적인 필터인 ILPF, BLPF, GLPF를 알아보았습니다. 이때, 물결파동 현상이 발생하는 데 이는 주파수 도메인에서의 불연속 지점이 생기는 것이 원인이였습니다. 이를 방지하기 위해서 불연속적인 ILPF가 아닌 BLPF나 GLPF를 사용하면 되었습니다. 하지만, 상대적으로 부드러운 필터들은 저주파 영역만 추출하는 것이 아니라 고주파 영역도 함께 추출되기 때문에 정량적인 분석이 어려울 수도 있습니다. 전체적인 개념을 이해하셨다면 영상 샤프닝도 쉽게 이해할 수 있습니다. 실제로 별 차이가 없다고 느끼실겁니다. 일단!! ..
안녕하세요. 지난 포스팅의 Opencv 제대로 쓰기[0]에서는 환경설정 및 간단한 테스트를 해보았습니다. 오늘은 본격적으로 opencv를 다루어보도록 하겠습니다. 가장 기본이라고 할 수 있는 영상 및 동영상을 불러오고 저장하는 방법에 대해서 알아보도록 하겠습니다. 1. 컴퓨터에 있는 영상 불러오기 및 저장하기 컴퓨터에 있는 영상을 불러오는 것은 지난 포스팅에서 간단하게 테스트 해보았듯이 기본적으로 cv2.imread(fileName, flag)가 기본입니다. 각 입력 파라미터는 아래와 같습니다. fileName (str): 영상 경로 flag (int): 영상을 불러올 때 옵션 Return : 영상 객체 Return Type : numpy.ndarray 여기서 flag 옵션은 다시 한번 3개로 나뉘게 됩..