Python-이론(118)
-
[opencv-python] Canny 알고리즘으로 Edge 찾기
Canny 알고리즘으로 Edge 찾기 canny 알고리즘은 여러 개의 단계를 거쳐서 Edge를 detection하는 방법입니다. 1단계: 노이즈 제거 이미지에 노이즈가 많으면 에지를 찾는 것이 어려울 수 있습니다. 따라서 첫단계에 5x5 가우시안 필터를 이용해 이미지의 노이즈를 줄여줍니다. 2단계: Gradient 값이 높은 부분을 찾기 Sobel 커널을 수평방향, 수직방향으로 적용하여 각 방향의 gradient를 획득합니다. 수평방향을 gradient를 Gx, 수직방향으의 gradient Gy edge를 인식할 수 있습니다. 3단계: 최대 값이 아닌 픽셀 0으로 만들기 이미지의 픽셀을 full Scan해서 edge가 아닌 pixel을 제거합니다. 4단계: Hyteresis Thresholding 이 E..
2019.07.08 -
[opencv-python] Canny 알고리즘으로 Edge 찾기
Canny 알고리즘으로 Edge 찾기 canny 알고리즘은 여러 개의 단계를 거쳐서 Edge를 detection하는 방법입니다. 1단계: 노이즈 제거 이미지에 노이즈가 많으면 에지를 찾는 것이 어려울 수 있습니다. 따라서 첫단계에 5x5 가우시안 필터를 이용해 이미지의 노이즈를 줄여줍니다. 2단계: Gradient 값이 높은 부분을 찾기 Sobel 커널을 수평방향, 수직방향으로 적용하여 각 방향의 gradient를 획득합니다. 수평방향을 gradient를 Gx, 수직방향으의 gradient Gy edge를 인식할 수 있습니다. 3단계: 최대 값이 아닌 픽셀 0으로 만들기 이미지의 픽셀을 full Scan해서 edge가 아닌 pixel을 제거합니다. 4단계: Hyteresis Thresholding 이 E..
2019.07.08 -
[opencv-python] Edge 찾기
Edge 찾기 이번에는 openCv를 통해서 이미지의 Edge를 찾아보겠습니다. gradient(이미지의 변화율)을 이용하여 에지를 찾는 법에 대해 알아보겠습니다. OpenCv는 Sobel, Scharr, Laplacian 세가지 타입의 Gradient 필터를 제공합니다. 에지랑 아래의 사진과 같이 변화폭이 큰 것을 의미합니다. 미분을 해보면 밑의 두번째 사진입니다. 두번째 사진과 같이 미분값이 큰 부분을 엣지로 선택하게됩니다. sobel에서는 전용 커널을 이용하여 컨볼루션하여 에지를 검출합니다. Gx는 가로방향을 Gy는 세로방향을 이용합니다. Sobel코드 import cv2 import numpy as np img = cv2.imread("../resource/Images/nike.jpg", cv2...
2019.07.08 -
[opencv-python]Erosion과 Dilation
Erosion과 Dilation Erosion과 Dilation은 이미지 변환 방법입니다. Eriosion은 and 연산을 통해서 가장 낮은 어두운 값을 변형시킵니다. 아래의 이미지를 보면 0, 1은 and 연산으로 0이 된다. 1, 1은 and 연산으로 1이 된다. 기존의 1의 개수가 1/2이 되어 줄어들었다. Dilation은 Erosion과 달리 값들을 or연산을 해주어서 팽창시킬 수 있게 할 수 있다. 코드 import numpy as np import cv2 def morph(): img = cv2.imread("../resource/Images/nike.jpg", cv2.IMREAD_GRAYSCALE) kernel = np.ones((3, 3), np.uint8) erosion = cv2.er..
2019.07.07 -
[opencv-python] blurring
blurring blurring이란 이미지의 고주파 부분을 조금 더 자연스럽게 바꾸어줄 수 있는 방법이다. 이미지의 고주파 저주파란? 저주파란 이미지 부분마다 색의 차이가 적은 부분을 의미합니다. 고주파는 이미지의 색의 차이가 큰 부분을 의미합니다. LPF, HPF LPF 저주파를 통과시키고 고주파가 통과되는 것을 막습니다. HPF 고주파를 통과시키고 저주파가 통과되는 것을 막습니다. 블러링은 LPF를 활용해 고주파의 부분을 부드럽게 만들어주는 것입니다. 하지만 이렇게 고주파의 부분을 완화시켜주면 edge가 부분적으로 줄어들게 되고 흐릿하게 변하게 됩니다. 코드 import numpy as np import cv2 def bluring(): img = cv2.imread("../resource/Image..
2019.07.07 -
[opencv-python] 이미지 변화주기
resize 이번에는 이미지의 사이즈를 조절해보겠습니다. 코드 import cv2 import numpy as np def transform(): baseImage = cv2.imread("../resource/Images/ipad.jpeg") h, w = baseImage.shape[:2] img2 = cv2.resize(baseImage, None, None, 0.1, 0.1, interpolation=cv2.INTER_AREA) cv2.imshow("img2", img2) cv2.waitKey(0) cv2.destroyAllWindows() transform() cv2.resize(src, dsize, dst, fx, fy, interpolation) src 이미지 데이터를 넣어주면 됩니다. dsi..
2019.07.06