일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 개발일기
- rnn
- 깃
- 순환신경망
- 컴퓨터비전
- 정보처리기사필기
- JSP
- 타입스크립트심화
- 자바
- 데이터베이스
- 쇼핑몰홈페이지제작
- JSP/Servlet
- 딥러닝
- JDBC
- 연습문제
- 디버깅
- 스프링
- 자바스크립트
- 스프링프레임워크
- 머신러닝
- 혼공머신
- html/css
- SQL
- 자바스크립트심화
- 정보처리기사실기
- ChatGPT
- 파이썬
- 데이터분석
- 상속
- 자바 실습
- Today
- Total
목록2024/11 (286)
"게임 개발자"를 향한 매일의 공부일지 _ 1기
이어서 연습문제를 풀어보겠다. 한 문제를 푸는데 최소 40분 이상 걸리는 매우 어려운 문제들이다. 그래도 이 책에 나온 모든 문제를 다 풀어본 후에 다음 학습으로 진행하기로 다짐했었다.문제를 풀며 개념과 이론을 더 확실하게 이해할 수 있었다. 연습문제 풀기 세 번째 문제 6번그림 3-18의 1차원과 2차원 가우시안 함수를 그리는 파이썬 프로그램을 작성하시오. 우선 가우시안에 대해서 이해해야 이 문제를 풀 수 있다. 공부할 때는 무슨 말인지 모르고 넘어갔던 이 내용을 다시 처음부터 학습해 보겠다. 가우시안 함수는 통계와 이미지 처리에서 중요한 함수로, 평균 주변에서 최대값을 갖고 멀어질수록 값이 0에 가까워지는 종 모양의 분포를 가지고 있다. 1차원 가우시안 함수1차원 가우시안 함수의 수식은 다..
점심식사 후에 놀고 싶어서 한참 쉬고 놀고 낮잠을 자다 4시 반에 일어나서 공부를 시작해 본다. 어제 오늘은 공부의 열정이 조금 떨어진 것 같다. 아마도 컴퓨터 비전 공부가 생각만큼 쉽지 않고 지루한 부분이 많아서 하기가 싫은 마음이 큰 것 같다. 그래도 한번 하기로 마음먹은 공부를 포기한 적은 없었으니 다음주 화요일까지는 학습을 진행할 것이다. 오늘 아무리 못해도 4장까지 다 공부하기로 했는데 진도가 많이 늦어졌다. 서둘러서 이제부터 쉬지 않고 공부를 하려고 한다. 지루하다고 영상을 틀어놓고 공부를 했더니 집중은 하나도 되지 않고 영상에만 푹 빠지거나 도리어 잠이 오게 된다. 이제 영상을 완전히 끄고 공부에만 집중할 것이다. 연습문제 풀기 두번째 문제 4번그림 3-16 b의 원래 영상 f에 다음 필..
이제 3장을 마무리하는 연습문제를 풀어보려고 한다. 이번 장도 10문제나 되어 3번에 나누어서 문제를 풀어볼 것이다. 3장부터는 정말 어려워서 절반도 이해하지 못했지만 문제를 풀면서 고민하며 감이 좀 잡힐 것 같다. 연습문제 풀기 문제 1번그림 3-5는 다양한 형태의 영상을 예시한다. 다음 영상이 차지하는 메모리 양을 바이트 단위로 제시하시오. (1)~(4)에서는 한 채널을 구성하는 화소 하나가 8비트(1바이트)로 표현된다고 가정한다.(1) 512 x 512 컬러 영상(2) 30초 분량의 256 x 256 컬러 동영상(30FPS를 가정)(3) 256 x 256 x 128 CT 영상(4) 512 x 512 크기의 8채널 다분광 영상(5) 20,000개 점으로 구성된 점 구름 영상(한 점은 x, y, ..
지금까지는 어떤 화소가 자기 자신 또는 이웃을 보고 값을 정하는 연산을 다루었는데 영상의 크기를 조절하거나 영상을 회전하려면 멀리 있는 화소에서 값을 가져올 수 있어야 한다. 기하 연산은 이런 경우를 다룬다. 기하 연산 1. 동차 좌표와 동차 행렬동차 좌표는 2차원 점의 위치 (x, y)에 1을 추가해 식 (3.10)처럼 3차원 벡터로 표현한다. 동차 좌표에서는 3개 요소에 같은 값을 곱하면 같은 좌표를 나타낸다. 표 3-1의 변환 행렬은 아무리 여러 개를 곱해소 직선은 직선으로 유지되고 평행인 선은 평행을 유지한다. 이런 성질은 동차 행렬의 3행이 (0 0 1)이기 때문이다. 이런 성질을 가진 변환을 그렇지 않은 변환과 구분하려고 어파인 변환이라 한다. 투영은 멀리 있는 물체가 작게 보이기 ..
조금 지루한 부분이 많지만 그래도 공부를 이어가 볼 것이다. 영역 연산은 이웃 화소를 같이 고려해 새로운 값을 결정한다. 영역 연산은 주로 컨볼루션을 통해 이루어진다. 컨볼루션컨볼루션은 입력 영상 f의 각 화소에 필터를 적용해 곱의 합을 구하는 연산이다. 아래 그림의 a는 1차원 영상을 1차원 필터 u로 컨볼루션 한 예다. 곱의 합은 해당하는 화소끼리 곱한 다음 결과를 더한다. 필터를 가장자리 화소에 씌우면 필터의 일부가 밖으로 나가기 때문에 적용할 수 없다. 컨볼루션은 연산 도중에 발생하는 값을 입력 영상 f 자체에 기록하는 제자리 연산으로 구현할 수 없다. 다양한 필터컨볼루션 자체는 특정한 목적이 없는 일반 연산이다. 필터가 정해지면 목적인 결정된다. 영상은 다양한 잡음이 있다. 밝은..
화소 입장에서 바라본 영상 처리 연산이란 화소가 새로운 값을 받는 과정이다. 새로운 값을 어디에서 받느냐에 따라 점 연산, 영역 연산, 기하 연산의 세 종류로 구분할 수 있다. 다음 그림은 세 종류의 연산을 설명한다. 점연산에서는 자기 자신으로부터 값을 받는다. 영역 연산에서는 이웃 화소의 값을 보고 새로운 값을 결정한다. 기하 연산에서는 기하학적 변환에 따라 다른 곳으로부터 값을 받는다.앞에서 공부한 오츄 이진화는 점 연산에 속하고, 모노폴리는 영역 연산에 속한다. 명암 조절식 (3.4)를 이용해 영상을 밝거나 어둡게 조정할 수 있다. 맨 위 식은 원래 영상에 양수 a를 더해 밝게 만드는데 화소가 가질 수 있는 최대값 L-1을 넘지 않게 min을 취한다. 가운데 식은 원래 영상에 양수 a를 빼..
이진 영상에 대해서 학습해 보려고 한다. 어제 낮잠을 정말 많이 자서 오늘은 철야를 하며 공부를 하기로 했다. 때로는 컬러 영상이나 명암 영상을 이진 영상으로 변환할 필요가 있다. 이진 영상은 화소가 0 또는 1인 영상이다. 따라서 화소당 1 비트면 정장할 수 있는데, 현재 컴퓨트를 메모리 용량이 크기 때문에 화소당 1바이트를 사용하여 메모리 효율보다 프로그래밍 편려성을 우선하는 경우가 많다. 컴퓨터비전에서는 에지를 검출한 후 에지만 1로 표현하거나 물체를 검출한 후 물체는 1, 배경을 0으로 표시하는 등의 일에 이진 영상을 활용한다. 이진화명암 영상을 이진화하려면 임계값 T보다 큰 화소는 1, 그렇지 않은 화소는 0으로 바뀌게 된다. 너무 낮게 또는 높게 설정하면 대부분 화소가 물체 또는 배경에 ..
컴퓨터 비전 수업은 총 5일 동안 진행되었는데 수업의 질이 많이 떨어지고 수업 영상도 제대로 출력되지 않아 절반 이상은 영상이 없었다. 그냥 첫날 수업 하나만 듣고 정리하는데서 만족하고 이제 나머지는 책을 통해 더욱 깊이있는 학습을 진행하기로 했다.오히려 책에서 더 많은 것들을 배울 수 있었다. 3장 영상 처리 공부를 시작해보겠다. 시작하기 전에자율주행차가 아래 왼쪽 그림과 같이 안개 낀 도로에 들어서면 행인이나 표지판을 인식하는 기능이 떨어질 수 있다. 이때 히스토그램 평활화라는 영상 처리 연산을 적용하면 오른쪽 그림의 개선된 영상을 얻는다. 개선된 영상에서 물체를 인식하면 기능을 회복할 수 있다. 영상 처리는 특정 목적을 달성하기 위해 원래 영상을 개선된 영상으로 변환하는 작업이다. 영상 처리는 화..
이어서 동영상을 실습하는 예제를 진행해 보겠다. 오늘은 낮잠을 많이 잔 관계로 밤늦게까지 공부를 이어갈 생각이다. 설치는 잘 되었는데 코드에 빨간줄이 떠서 제대로 된 코드인지 의심이 가기도 했다. 하지만 코드를 수행하면 이러한 오류가 뜬다. 코드 수정해보기 Jupyter Notebook 환경에서는 %pip install을 사용하는 것이 더 안정적이라고 한다. !로 하면 설치가 잘 되지 않을 수 있으니 %로 바꾸어서 다시 설치를 해주었다. 설치 후 제대로 설치되었는지 확인하는 코드를 하나 추가해 주었다. 이 코드는 youtube-dl을 최신 버전으로 설치하거나 다시 설치하기 위해 사용하는 명령어이다. 여기서는 git을 통해 youtube-dl의 최신 소스를 직접 가져와 설치..
이번에는 동영상을 읽고 출력하는 학습을 진행해보겠다. 이렇게 비디오 객체는 아스키 코드로 변환된다. 이제 실습을 진행해보겠다. 이 코드는 저장된 비디오 동영상을 읽고 출력한다. puppy.mp4 파일을 프레임 단위로 읽고, 25밀리초 간격으로 화면에 표시한다. q 키를 누르거나 비디오의 끝에 도달하면 프로그램이 종료되는데, 몇 초가 지나면 비디오 창이 꺼지도록 설정했다. 이러한 강아지 동영상이 출력된다. 너무 짧은 시간 재생이 되니 불편함이 있다면 WaitKey()값을 늘려줄 수도 있다. 처음에 코드를 실행할 때는 단순히 동영상을 길게 표시되는 줄 알았는데, 자세히 보니 동영상이 느리게 재생되기 때문에 늦게 꺼지는 거였다.이번에는 q를 누르면 동영상이 꺼지는 실습을 진행해..