OpenCV: Smoothing Images Goals Learn to: Blur images with various low pass filters Apply custom-made filters to images (2D convolution) 2D Convolution ( Image Filtering ) As in one-dimensional signals, images also can be filtered with various low-pass filters (LPF), high-pass filt docs.opencv.org import cv2 import numpy as np import matplotlib.pyplot as plt 이미지 주파수 이미지도 음성 신호처럼 주파수로 표현할 수 있다. 일반..
python 검색 결과
이미지 위에 임의의 4점을 선택하면 그 구역 내 이미지를 원근 변환하는 코드를 작성해보았다. homograpyTransformation 함수를 통해 4점을 입력받으면 calPoint 함수로 상하좌우를 지정해주기 때문에 전처럼 "좌상 → 좌하 → 우상 → 우하" 순으로 점을 찍지 않아도 되며, 변형 후 각 점의 좌표와 원근 변환한 이미지 크기도 같이 계산해준다. img = cv2.imread('athletic-field-1867053_1920.jpg') count = 0 blue, green, red, yellow = (255, 0, 0), (0, 255, 0), (0, 0, 255), (0, 255, 255) point_array = [] def calPoint(ary): total = np.sum(ar..
import numpy as np import cv2 import matplotlib.pyplot as plt 2D 이미지 기하학적 변형 (Transformation) → 행렬 변환 1. 강체변환 (Ridid-Body) : 크기와 형태를 유지한 채 위치와 방향을 바꾸는 변환 (ex. 위치변경(Translation), 회전(Rotation)) 2. 유사변환 (Similarity) : 강체변환에 크기의 변환도 허용 (ex. 크기변경(Scaling)) 3. 선형변환 (Linear) : Vector 공간에서의 이동. (회전, 크기변경 및 반전, 밀림도 가능하지만 위치변경은 못한다.) 4. Affine : 선형변환과 이동변환까지 포함. 선의 수평성은 유지 5. Perspective : Affine 변환에서 수평성..
import numpy as np import cv2 import matplotlib.pyplot as plt 2D 이미지 기하학적 변형 (Transformation) → 행렬변환 1. 강체변환 (Ridid-Body) : 크기와 형태를 유지한 채 위치와 방향을 바꾸는 변환 (ex. 위치변경(Translation), 회전(Rotation)) 2. 유사변환 (Similarity) : 강체변환에 크기의 변환도 허용 (ex. 크기변경(Scaling)) 3. 선형변환 (Linear) : Vector 공간에서의 이동. (회전, 크기변경 및 반전, 밀림도 가능하지만 위치변경은 못한다.) 4. Affine : 선형변환과 이동변환까지 포함. 선의 수평성은 유지 5. Perspective : Affine 변환에서 수평성이..
스태킹 스태킹(Stacking)이라는 기법은 전체적인 면에서는 앙상블 러닝과 같은 원리이지만, 기존의 앙상블 러닝과 조금 다른 면을 가지고 있다. 스태킹은 복수 개의 기반 학습기들이 학습 - 예측을 진행하고, 예측 데이터들을 학습 데이터로 입력 받는 메타 모델(최종 학습기라고 생각하면 이해하기 쉽다.)이 한번 더 학습 - 예측하는 방식이다. 아주 많이 사용되는 기법은 아니지만, 성능을 최대한으로 향상시키기 위해서 쓰이는 기법이다. 교차 검증 기반의 스태킹 일반 스태킹의 경우, 최종 메타 모델이 학습하는 데이터가 학습 데이터가 아닌, 테스트 데이터를 예측한 값들을 학습하기 때문에, 과적합의 문제가 발생한다. 과적합을 완화시키기 위해서 스태킹 기법과 교차검증 기법을 동시에 적용한다. CV 교차 검증에서는 여..
import cv2 import numpy as np import matplotlib.pyplot as plt 전역 임계처리 (Global Thresholding) 하나의 이미지에 전역으로 적용될 하나의 문턱값을 이용해 thresholding 기능을 제공하는 함수가 있다. cv2.threshold(src, thresh, maxval, type [, dst]) → retval, dst threshold 함수는 멀티 채널 배열의 thresholding을 픽셀단위로 적용한다. 즉 컬러 이미지에도 사용할 수 있으나, 주로 Grayscale 이미지에서 바이너리 이미지를 얻기 위해 사용하거나 픽셀 값 중 너무 크거나 작은 값들을 필터링하여 노이즈를 제거하기 위해 사용한다. 1. src : threshold에 적용할..
import cv2 import numpy as np Digital Image 디지털 이미지는 2차원 행렬의 형태로 표현이 된다. 행과 열로 이루어진 격자를 pixel라고 하며, pixel로 이루어진 이미지를 bitmap image라고 한다. 각 pixel의 위치는 영상좌표와 행렬 위치, 2가지로 표현할 수 있다. 좌상단 꼭짓점을 중심으로 영상좌표는 (y, x)로 표현하고, 행렬위치는 (row, column)로 표현한다. OpenCV 에서는 영상좌표와 행렬 위치, 2가지 형태가 사용되기 때문에 유의해야 한다. Binary Image Binary Image 는 픽셀당 1bit로 표현하는 이미지를 의미한다. 오직 흰색(1)과 검은색(0)으로만 표현이 된다. Binary Image를 만드는 방법에는 두 가지가..
이미지 비트연산 이미지는 AND, NOT, OR, XOR 의 비트연산이 가능하다. 이미지 비트연산은 이미지에서 특정 영역을 추출하거나 직사각형 모양이 아닌 ROI를 정의할 때, 이미지에서 바탕을 제거하고 2개의 이미지를 합칠 때에 유용하게 사용할 수 있다. 이때, 중요한 것은 비트 연산할 이미지의 크기가 동일해야 한다는 것이다. def bitOperation_black_bg(hpos, vpos): img1 = cv2.imread('iceland-1979445_1280.jpg') img2 = cv2.imread('opencv_logo.png') rows, cols, channels = img2.shape roi = img1[ vpos:vpos + rows, hpos:hpos + cols ] img2gray..
import matplotlib.pyplot as plt import numpy as np import cv2 def bgr_to_rgb(imgfile): b, g, r = cv2.split(imgfile) imgfile = cv2.merge([r, g, b]) return imgfile 이미지 더하기 두개의 이미지를 더하는 데는 2가지 방법이 있다. 하나는 + operator를 사용하여 연산하는 방법과 다른 하나는 opencv의 add함수를 사용하는 것이다. 두 방법 모두 서로 다른 이미지를 더하지만 더하는 방식에는 그 차이가 있다. img1 + img2 우리가 opencv의 imread 함수로 이미지를 불러들였을 때, 그 이미지가 numpy array의 형식을 가지고 있으므로 img1과 img2를 더..
import cv2 import numpy as np 이미지 속성 1. img.shape : 이미지 해상도 및 채널 수 (height, width, channel), (행, 열, 채널) 2. img.size : 이미지 크기 (byte 단위) 3. img.dtype : 이미지 데이터 타입 img = cv2.imread('bald-eagle-5463386_1280.jpg') print(img.shape) print(img.size) print(img.dtype) cv2.imshow('Show Image', img) cv2.waitKey(0) cv2.destroyAllWindows() 이미지 픽셀 값 얻고 수정해보기 한 장의 이미지는 지정된 크기의 BGR 값들의 배열로 이루어져 있다. 예를들어 10 * 10 ..
최근댓글