목록전체 글 보기 (259)
귀퉁이 서재
이번 포스팅에서는 이미지를 이동, 확대, 축소, 회전하는 방법에 대해 알아보겠습니다. 이번 포스팅 역시 '파이썬으로 만드는 OpenCV 프로젝트(이세우 저)'를 정리한 것임을 밝힙니다. 코드: github.com/BaekKyunShin/OpenCV_Project_Python/tree/master/05.geometric_transform 이미지 이동 이미지를 이동하는 방법은 간단합니다. 원래 있던 좌표에 이동시키려는 거리만큼 더하면 됩니다. x_new = x_old + d₁ y_new = y_old + d₂ 위 방정식을 행렬식으로 표현하면 아래와 같습니다. 행렬식을 다시 풀어서 써보겠습니다. x_new = x_old + d₁ = 1*x_old + 0*y_old + d₁ y_new = y_old + d₂ =..
3년 전 읽었던 코스모스를 다시 한번 읽어봤다. 한 번만 읽기에는 가치 있는 내용이 너무 많았기 때문이고, 3년 전에 한번 읽어서 내용이 머릿속에서 많이 잊혔기 때문이다. 주요 챕터별로 가장 인상 깊었던 내용을 발췌하고 그에 대한 생각을 정리했다. 제1장 코스모스의 바닷가에서 코스모스의 어느 한구석을 무작위로 찍는다고 했을 때 그곳이 운 좋게 행성 바로 위나 근처일 확률은 1/10 ³³이다. 우리가 살면서 일어날 확률이 그렇게 낮은 일이 일어나는 것을 본다면 우리는 그 일에 매혹될 수밖에 없을 것이다. 이런 의미에서 사람이 살고 있는 이 세상은 참으로 고귀한 것이라고 단언할 수 있다. 우주에는 은하가 대략 1000억 개 있고 각각의 은하에는 저마다 평균 1000억 개의 별이 있다. 모든 은하를 다 합치면..
이번 포스팅에서는 여러 가지 실습을 해보겠습니다. 이번 포스팅 역시 '파이썬으로 만드는 OpenCV 프로젝트(이세우 저)'를 정리한 것임을 밝힙니다. 코드: github.com/BaekKyunShin/OpenCV_Project_Python/tree/master/04.img_processing 이미지 유사도 비교 실습 이전 포스팅에서 히스토그램은 이미지의 픽셀 값의 분포를 나타낸다고 배웠습니다. 픽셀 값의 분포가 서로 비슷하다면 유사한 이미지일 확률이 높고, 분포가 서로 다르다면 서로 다른 이미지일 확률이 높습니다. 이러한 사실을 이용하여 이미지의 유사도를 측정할 수 있습니다. 즉, 두 이미지의 히스토그램을 비교하면 되는 것입니다. OpenCV는 히스토그램을 비교하여 두 이미지가 얼마나 유사한지 판단해주는..
이번 포스팅에서는 2차원 히스토그램과 역투영에 대해 알아보겠습니다. 이번 포스팅 역시 '파이썬으로 만드는 OpenCV 프로젝트(이세우 저)'를 정리한 것임을 밝힙니다. 코드: github.com/BaekKyunShin/OpenCV_Project_Python/tree/master/04.img_processing 2차원 히스토그램 (2D Histogram) 1차원 히스토그램은 이미지 안에 픽셀이 각각 몇 개인지를 표현합니다. 반면, 2차원 히스토그램은 축이 2개이고, 각 축이 만나는 지점의 개수를 표현합니다. 바로 예를 들어보겠습니다. # 2D 히스토그램 (histo_2d.py) import cv2 import matplotlib.pylab as plt plt.style.use('classic') # --①..
이번 포스팅에서는 히스토그램에 대해 알아보겠습니다. 이번 포스팅 역시 '파이썬으로 만드는 OpenCV 프로젝트(이세우 저)'를 정리한 것임을 밝힙니다. 코드: github.com/BaekKyunShin/OpenCV_Project_Python/tree/master/04.img_processing 히스토그램 히스토그램은 도수 분포표를 그래프로 나타낸 것입니다. 쉽게 말해 무엇이 몇 개 있는지 개수를 세어 놓은 것을 그래프로 나타낸 것을 말합니다. 이미지의 픽셀값을 히스토그램으로 표시하는 것은 이미지를 분석하는 데 도움을 줍니다. 예를 들어 전체 이미지에서 픽셀 값이 1인 픽셀이 몇 개이고, 2인 픽셀이 몇 개이고, 255인 픽셀이 몇 개인지까지 세는 것입니다. 이렇게 함으로써 픽셀들의 색상이나 명암의 분포를..
이번 포스팅에서는 이미지 연산에 대해 알아보겠습니다. 이번 포스팅 역시 '파이썬으로 만드는 OpenCV 프로젝트(이세우 저)'를 정리한 것임을 밝힙니다. 코드: github.com/BaekKyunShin/OpenCV_Project_Python/tree/master/04.img_processing 이미지 연산 이미지 연산을 위해서 numpy 연산을 활용하는 방법이 있습니다. 하지만 OpenCV에서도 이미지 연산을 위한 함수를 제공합니다. OpenCV에서 굳이 연산을 위한 함수를 제공하는 이유는 값의 범위 때문입니다. 한 픽셀이 가질 수 있는 값의 범위는 0~255인데, 연산의 결과가 255보다 크거나 0보다 작을 수 있어서 결과 값을 0~255로 제한할 필요가 있습니다. OpenCV에서 제공하는 사칙연산 ..
이번 포스팅에서는 바이너리 이미지를 만드는 대표적인 방법인 스레시홀딩에 대해 알아보겠습니다. 이번 포스팅 역시 '파이썬으로 만드는 OpenCV 프로젝트(이세우 저)'를 정리한 것임을 밝힙니다. 코드: github.com/BaekKyunShin/OpenCV_Project_Python/tree/master/04.img_processing 스레시홀딩(Thresholding) 스레시홀딩은 바이너리 이미지를 만드는 가장 대표적인 방법입니다. 바이너리 이미지(binary image)란 검은색과 흰색만으로 표현한 이미지를 의미합니다. 스레시홀딩이란 여러 값을 어떤 임계점을 기준으로 두 가지 부류로 나누는 방법을 의미합니다. 전역 스레시홀딩 어떤 임계값을 정한 뒤 픽셀 값이 임계값을 넘으면 255, 임계값을 넘지 않으..
파이토치(PyTorch)에 익숙하지 않아 이참에 제대로 배워보고자 강의를 하나 들었습니다. Udemy에서 제공하는 10시간짜리 짧은 강의로 강의명은 PyTorch for Deep Learning and Computer Vision입니다. 개념 설명을 간단하게 한 뒤 파이토치로 라이브 코딩을 하며 딥러닝 모델을 구현합니다. 사실 저는 파이토치만 배우는 강좌를 원했지만 앞단에 개념 설명이 좀 있습니다. 덕분에 딥러닝 복습이 되어 좋긴 했습니다만 파이토치를 다루는 부분이 더 많았으면 좋지 않았을까 하는 아쉬움은 있습니다. 그래도 파이토치를 배우기에 상당히 좋은 강의였습니다. 무엇보다 Google Colab에서 라이브 코딩을 하며 설명하니 이해하기가 쉬웠습니다. 이 강의를 다 듣고 파이토치 Document까지 ..
이번 포스팅에서는 OpenCV로 색상을 표현하는 방식에 대해 알아보겠습니다. 이번 포스팅 역시 '파이썬으로 만드는 OpenCV 프로젝트(이세우 저)'를 정리한 것임을 밝힙니다. 코드: github.com/BaekKyunShin/OpenCV_Project_Python/tree/master/04.img_processing BGR, BGRA 색상을 표현하는 방법으로는 RGB(Red, Green, Blue) 방식이 있습니다. 빨강, 초록, 파랑 세 가지 색의 빛을 섞어서 원하는 색을 만드는 방식입니다. 각 색상은 0~255 사이의 값으로 표시하고 값이 커질수록 해당 색상의 빛이 밝아지는 원리입니다. RGB = (255, 255, 255) 일 때는 흰색이고, RGB = (0, 0, 0) 일 때는 검은색입니다. 그..
이번 포스팅에서는 이미지 내에서 관심 영역(Region of Interest, ROI)을 표시하는 방법에 대해 알아보겠습니다. 이번 포스팅 역시 '파이썬으로 만드는 OpenCV 프로젝트(이세우 저)'를 정리한 것임을 밝힙니다. 코드: github.com/BaekKyunShin/OpenCV_Project_Python/tree/master/04.img_processing 관심 영역(ROI) 표시하기 관심 영역(ROI)이란 말 그대로 영상 내에서 관심이 있는 영역을 뜻합니다. 아래는 일몰 사진입니다. 일몰 사진 내에서 원하는 영역을 표시하는 방법에 대해 살펴보겠습니다. 아래 코드를 실행하면 태양 주위를 초록색 사각형으로 표시한 이미지가 생성됩니다. # 관심영역 표시 (roi.py) import cv2 impo..
이번 포스팅에서는 창을 관리하는 방법과 키보드 및 마우스 이벤트를 처리하는 방법을 알아보겠습니다. 이번 글 역시 파이썬으로 만드는 OpenCV 프로젝트(이세우 저)를 정리한 것입니다. 코드: https://github.com/BaekKyunShin/OpenCV_Project_Python/tree/master/02.interface 창 관리 우선, 창 관리를 하는 5가지 함수에 대해 알아보겠습니다. cv2.namedWindow(winname, flags) 함수는 winname이라는 이름을 갖는 창을 생성해줍니다. 파라미터는 아래와 같습니다. winname: 창 구분자로 활용될 창 이름 flags: 창 옵션 (cv2.WINDOW_NORMAL: 사용자가 창 크기를 조정할 수 있음, cv2.WINDOW_AUTO..
이번 포스팅에서는 이미지에 도형을 그리는 방법에 대해 알아보겠습니다. 이번 포스팅 역시 '파이썬으로 만드는 OpenCV 프로젝트(이세우 저)'를 정리한 것임을 밝힙니다. 코드: https://github.com/BaekKyunShin/OpenCV_Project_Python/tree/master/02.interface 직선 그리기 우선, 아래와 같이 빈 도화지 같은 하얀 이미지를 준비합니다. (blank_500.jpg) 이곳에 다양한 직선을 그려보겠습니다. cv2.line(img, start, end, color, thickness, lineType) 함수를 호출하여 다양한 선을 그릴 수 있습니다. 파라미터는 아래와 같습니다. img: 그림을 그릴 이미지 파일 start: 선 시작 좌표(ex; (0,0))..
OpenCV를 활용한 대부분의 작업은 이미지를 읽어서 적절한 연산을 적용한 뒤 결과를 출력하거나 파일로 저장하는 것입니다. 이번 포스팅에서는 OpenCV의 가장 첫 번째 단계인 이미지 입출력에 대해 알아보겠습니다. 이 포스팅은 파이썬으로 만드는 OpenCV 프로젝트(이세우 저)를 정리한 것임을 우선 밝힙니다. 코드: https://github.com/BaekKyunShin/OpenCV_Project_Python/tree/master/02.interface 이미지 읽기 OpenCV를 사용해서 이미지를 화면에 표시하는 가장 간단한 코드는 아래와 같습니다. 이미지 파일은 이곳에서 다운받으시기 바랍니다. 참고로 몇몇 사진(바로 아래 예제 포함)은 제가 직접 찍어서 다운받은 폴더에 없을 겁니다. 가끔 이미지 파일..
이번 포스팅에서는 컴퓨터 비전의 대표적인 라이브러리인 OpenCV에 대해서 배워보겠습니다. 그전에 영상 처리와 컴퓨터 비전에 대해 간단히 알아보겠습니다. 영상 처리와 컴퓨터 비전 영상 처리(image processing)는 영상에 여러 연산을 가해서 원하는 결과를 새롭게 얻어내는 과정입니다. 대부분의 영상 처리의 목적은 더 좋은 품질의 영상을 얻는 것입니다. 영상 처리의 사례로는 화질 개선, 영상 복원, 영상 분할 등이 있습니다. 컴퓨터 비전은 영상 처리를 포함하는 포괄적인 개념입니다. 영상 처리가 원본 영상을 사용자가 원하는 새로운 영상으로 바꿔주는 기술이라면, 컴퓨터 비전은 영상에서 의미 있는 정보를 추출해 주는 기술입니다. 예를 들면, 객체 검출(Object Detection), 객체 추적(Obje..
지금까지 데이터 분석 - 머신러닝 - 딥러닝 - 자연어 처리를 공부했습니다. 이것들에 이어 앞으로는 컴퓨터 비전 공부를 하려고 합니다. 사실 자연어 처리도 얕게 공부한 수준이긴 합니다. 이런 상황에서 새롭게 컴퓨터 비전을 공부하는 이유는 캐글에 컴퓨터 비전 관련 대회가 상당히 많기 때문입니다. 자연어 처리 대회가 많다면 그것에 집중하겠는데 아무래도 비전 대회가 많아 이 분야도 공부를 하고 싶었습니다. 공부를 위해 선정한 책은 파이썬으로 만드는 OpenCV 프로젝트(이세우 저)입니다. 주변에서 추천받은 책이기도 하고, 쉽게 쓰였다는 후기가 많아서 이 책으로 선정했습니다. 이 책을 완독하고 내용을 완전히 습득하는데 얼마나 걸릴지는 모르겠습니다. 중간에 캐글 대회와 병행한다면 몇 달이 걸릴 수도 있을 겁니다...
한승태 작가의 [인간의 조건], [고기로 태어나서]라는 두 권의 책을 읽었다. 오디오북으로 들었으니 두 권의 책을 들었다(?)라고 표현해야 맞을지도 모른다. [인간의 조건]은 20대 후반의 저자가 진도 꽃게잡이 배, 서울 편의점과 주유소, 아산 돼지 농장, 춘천 비닐하우스, 당진 자동차 부품 공장에서 체험한 노동 현장에 대해 세밀하게 묘사한 책이다. [고기로 태어나서]는 충남 금산과 전북 정읍의 닭 농장, 경기도 이천과 충남 강경, 그리고 강원도 횡성의 돼지 농장, 경기도 포천과 충남 금산의 개고기 농장에서 노동했던 상황을 생생하게 담아낸 책이다. 정말 엉뚱한 생각이지만 나도 대학을 졸업할 즈음 이런 일을 해본 뒤 나만의 기록으로 남기면 어떨까 상상했었다. 한승태 작가처럼 농장이나 공장의 일이 아닌 건설..
무료 온라인 강좌 플랫폼인 에드위드(edwith)에 앤드류 응(Andrew Ng) 교수님의 딥러닝 강좌가 있어서 한번 들어봤습니다. 이 딥러닝 강좌를 들은 목적은 두 가지였습니다. 첫 번째는 딥러닝 전반에 대한 복습이고, 두 번째는 컴퓨터 비전 학습을 위한 부팅이었습니다. 처음엔 그냥 강의만 듣는 것이고 이미 아는 내용이 많기 때문에 금방 들을 수 있겠지라는 마음으로 시작했습니다. 그런데 총 140강으로 강좌수가 많아서 약 2~3주가량 걸렸습니다. 머신러닝/딥러닝의 대가인 앤드류 응 교수님의 강좌이기 때문에 강의 퀄리티는 말할 필요 없이 좋았습니다. 이론뿐만 아니라 실제 적용을 위한 팁도 알려주어 유용했습니다. 또한, 에드위드에서 한글 자막을 달아줬을 뿐만 아니라 각 강의마다 핵심 개념을 요약정리해주어 ..
실존주의에 대해 제대로 정리하고 싶은 마음에, 3년 전 읽었던 게리 콕스의 [실존주의자로 사는 법]을 다시 한번 읽어봤다. 이 책은 실존주의에 대해 알기 쉽게 정리한 책이다. 너무 어렵지도 너무 얕지도 않은 딱 적당한 수준의 실존주의 입문서라고 생각한다. 표지에는 알베르 까뮈, 시몬 드 보부아르, 장 폴 사르트르, 프리드리히 니체의 얼굴이 실려 있다. 모두 실존주의의 대가들이다. 이 중 실존주의를 발전시키는 데 큰 역할을 한 장 폴 사르트르의 주장에 대해 집중적으로 조명하고 있다. 최대한 쉽게, 그러나 어느 정도 깊이도 있게 실존주의에 대해 정리해보고자 한다. 실존주의란 무엇인가? 우선 실존주의의 개념에 대해 짚고 넘어갈 필요가 있다. 실존주의란 무엇일까? 실존주의는 '사랑이란...' 시리즈와 비슷하다...
제16장 프래그머티즘과 과정의 철학 19세기에서 20세기로 넘어가면서 변화의 개념에 초점을 둔 두 개의 철학이 생겨났다. 프래그머티즘과 과정의 철학이 그것이다. 두 철학은 고정불변의 진리가 있다는 사실을 부인했다. 그 대신 그것들은 변화하는 경험과 형이상학적 과정의 입장에서 사물을 이해해야 했다. 프래그머티즘은 미국의 철학 기조를 마련하는 데 가장 주도적인 공헌을 했다. 프래그머티즘을 처음 주장한 철학자는 찰스 퍼스이며, 윌리엄 제임스에 의해 대중적으로 퍼져 나가게 되었다. 또한 존 듀이는 이 철학으로 미국의 제도상 여러 문제를 개선하는 데 기여했다. 이 세 철학자의 핵심적인 주장은 일생생활을 어떤 식으로든 변화시키지 않는 철학은 별다른 가치가 없다는 것이다. 프래그머티즘은 형이상학적 체계라기보다 문제 ..
제12장 칸트 임마누엘 칸트(1724~1804)는 여든 평생을 독일의 쾨니히스베르크라는 작은 지방 도시에서 살았다. 그는 일생에서 주목할만한 사건의 기복이 없었다. 여행도 하지 않았고 정치적, 사회적 활동도 하지 않았다. 동네 사람들은 그가 산책하는 시간에 시계를 맞췄다고 할 정도로 그는 철저하고 엄격하고 계획적인 사람이었다. 그의 기념비적인 저서로는 [순수 이성 비판](1787), [실천 이성 비판](1788), [판단력 비판](1790)이 있다. 1. 칸트의 문제 형성 칸트는 근대 철학의 혁명을 이룩했다. 플라톤으로부터 시작된 서양 철학은 대륙의 이성론과 영국의 경험론으로 나뉘었고, 그것은 칸트에 의해 합치가 되었고, 칸트로부터 다시 분화되어 나갔다고 해도 과언이 아닐 정도다. 칸트에게는 과 의 문제..