일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- reconstruction
- 3D
- cv2
- 논문 구현
- 알고리즘
- numpy
- OpenCV
- Knowledge Distillation
- attention
- level2
- center loss
- transformer
- NLP
- flame
- Computer Vision
- deep learning
- 큐
- 스택
- 프로그래머스
- 임계처리
- Object Tracking
- re-identification
- Deeplearning
- 자료구조
- point cloud
- Object Detection
- Threshold
- Python
- 파이썬
- 딥러닝
- Today
- Total
목록Python (15)
공돌이 공룡의 서재
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/be517w/btrdfHBDPj6/phsOzLIPzYDwjw4hk9tUEK/img.png)
이번에 알아볼 ICP 알고리즘은 바로 전에 작성한 글 ICP point to point 방법과는 달리 normal vector를 사용한 방법이다. 구현한 논문은 다음과 같다. https://www.comp.nus.edu.sg/~lowkl/publications/lowk_point-to-plane_icp_techrep.pdf 수식적으로 복잡한 부분이 많아서 과정을 코드와 함께 살펴보고자 한다. M은 최적화하고자 하는 4x4 transformation 식이다. s는 source point cloud의 각 점에 해당하고, d는 destination point cloud의 각 점에 해당한다. n은 d에서 normal vector다. normal vector라 하면 그 점의 접면에 수직인 벡터를 의미한다. 그러면..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/xhLGX/btqRt5pU74E/m5bzgEk7WOD4R00LqBk84k/img.png)
John F Canny라는 분이 개발한 알고리즘으로, 간단 요약하자면 이미지 상에서 edge, 즉 경계선 또는 테두리를 찾을 때 유용한 알고리즘이다. 코드는 원리에 비해 간단해서 원리를 몰라도 사용 가능하지만 어떻게 찾는지 정도만 읽으면 도움이 될 것이다. 어떻게 찾을까. 5개의 과정을 거치는데 다음과 같다. (출처: en.wikipedia.org/wiki/Canny_edge_detector) 1. 가우시안 필터를 이용하여 이미지 상에서 노이즈를 제거하여 smooth 이미지를 얻는다.: 가우시안 필터란 저주파 필터에 해당하는 필터다. 저주파 필터란 주파수가 작은 신호들은 통과시키고 높은 신호들은 거르는 역할을 하는 필터다. 일반적으로 5x5 크기의 필터를 사용하고, 필터 크기가 클수록 노이즈에 대한 민감..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/brMz24/btqJnFSCVTi/Vr4MGPrFzeNubuJng9QOVk/img.png)
지금까지 배운 임계처리 방식에서는 단점이 하나 있다. 바로 조명에 약할 수 있다는 것. 사진을 찍을 때 조명의 위치에 따라서 어떤 사물은 그늘이 져있어 더 어둡게 보일 수 있고, 어떤 사물은 빛이 강해서 원래 색보다 더 밝게 보일 수 있다. 상황에 따라서는 글자의 일부분은 읽을 수 있는데 다른 부분은 어두워서 읽지 못하는 경우도 생길 것이다. 이런 그림이 있다고 생각해보자. 3등분했을 때 조명 차이가 뚜렷히 나는 사진이라고 생각해보자. 여기서 사람, 사과, 집 (객체)를 배경과 구분하여 얻고 싶은 상황이다. 하나의 임계값 (Tau 0)로 전체 이미지에 대해 임계처리를 한다 생각하자. 임의로 왼쪽부터 영역의 픽셀값이 60, 120, 180이라 하고, 임계값을 그 가운데 값인 120이라고 하자. 그럼 집이 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bNABFW/btqIqn06fHu/BWPB94jKNfYPxoS6kkrkkK/img.png)
0. 들어가기 전 2020/09/02 - [코딩/opencv] - [python openCV] 이미지 처리 - 임계 처리 (1): inRange, threshold 2020/09/11 - [코딩/opencv] - [python openCV] 이미지 처리 - 임계 처리 (2): otsu algorithm thresholding 논문 분석 및 구현 첫 번째 임계처리 포스트에서 otsu와 triangle에 대해 알아보았고, 두 번째 포스트에서는 otsu를 deep하게 알아보았다. 이번 포스트에선 마지막으로 triangle algorithm을 자세히 다루고자 한다. 이 thresholding은 정보면에서 조금 문제가 있었기에 목차는 다음과 같이 하여 작성하겠다. 논문 설명 알고리즘 코드 구현 (1) & 문제 상..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cLscjz/btqIzZRVS4j/F09Hz2VHAYsF19uQaAJgo0/img.png)
0. 들어가기 전 2020/09/02 - [코딩/opencv] - [python openCV] 이미지 처리 - 임계 처리 (1): inRange, threshold [python openCV] 이미지 처리 - 임계 처리 (1): inRange, threshold 오늘 갖고놀 이미지. 임계 처리란 임계값(threshold value. 경계가 되는 기준 값)을 기준으로 이미지를 이진화화는 것을 말한다. 이진화를 이진화를 했을 때 0과 255로 이루어진 흑백 이� mr-waguwagu.tistory.com 이전 포스트의 마지막에서 threshold의 여러 방법들 중에서 otsu 와 triangle에 대해 간단하게 알아보았다. 주어진 threshold를 사용하지 않고 자체적인 alogrithm을 따라 새로운 t..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b7AIJ7/btqH7afxLAv/AKsWcmGHmMGKEVGH4V5QHk/img.png)
from math import ceil def solution(progresses, speeds): answer = [] #1 period = [ceil((100-progresses[i])/speeds[i]) for i in range(len(progresses)-1, -1, -1)] #2 release = [] elapse = period.pop() release.append(elapse) #3 while len(period) > 0: work = period.pop() if elapse < work: answer.append(len(release)) release = [] period.append(work) elapse = work else: release.append(work) answer.appe..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/o4jsd/btqHSg04hIZ/e33e5NQBPyNZUfe8ZyYJR0/img.png)
def solution2(prices: list): answer = [] ##1 price = prices[::-1] time = 0 delay = price.copy() _ = delay.pop() ##2 while len(delay) > 0: time += 1 now = price.pop() later = delay.pop() # print(now, price) # print(later, delay) if now > later: ## 3-1 answer.append(1) else: ## 3-2 flag = False for i in range(1, len(price)): if now > price[-i - 1]: flag = True answer.append(i + 1) break if not fla..