[OpenCV] Feature Detection & Matching | ํŠน์ง• ๊ฒ€์ถœ๊ณผ ๋งค์นญ | ์ด๋ฏธ์ง€์—์„œ ์œ ์‚ฌํ•œ ํŠน์ง• ์ฐพ์•„๋‚ด๊ธฐ | ์ด๋ฏธ์ง€ ๋Œ€์‘์ 
ยท
๐Ÿ’ป Programming/Computer Vision
Feature Detection & Matching ์ปดํ“จํ„ฐ๋น„์ „ ๋ถ„์•ผ์—์„œ์˜ feature matching์€ ๋‘ ๊ฐœ ์ด์ƒ์˜ ์ด๋ฏธ์ง€์—์„œ ๊ณตํ†ต์ ์œผ๋กœ ๋‚˜ํƒ€๋‚˜๋Š” ํŠน์ง•์„ ์ฐพ์•„๋‚ด๋Š” ๊ธฐ์ˆ ์ด๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ด๋ฏธ์ง€ ๊ฐ„์˜ ๋Œ€์‘์ ์„ ์ฐพ๊ฑฐ๋‚˜, ์ด๋ฏธ์ง€ ๊ฐ„์˜ ๋ณ€ํ™”๋ฅผ ์ถ”์ ํ•˜๋Š” ๋“ฑ ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์— ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ Feature matching์˜ ๊ณผ์ •์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ๋‹จ๊ณ„๋กœ ๋‚˜๋‰œ๋‹ค. ๋จผ์ € ๊ฐ ์ด๋ฏธ์ง€์—์„œ ํŠน์ง•์„ ๊ฒ€์ถœํ•˜๊ณ , ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐ ํŠน์ง•๋“ค์ด ์–ด๋–ป๊ฒŒ ๋งค์นญ๋˜๋Š”์ง€ ์ฐพ์•„๋‚ด๋Š” ๊ฒƒ์ด๋‹ค. 1. Feature Detection (ํŠน์ง• ๊ฒ€์ถœ) ์ด๋ฏธ์ง€์—์„œ ํŠน์ง•์„ ๊ฒ€์ถœํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ด๋ฏธ์ง€ ๋‚ด์˜ ํŠน์ดํ•œ ํŒจํ„ด์ด๋‚˜ ๊ตฌ์กฐ๋ฅผ ์ฐพ์•„๋‚ด๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค. ์ด๋ฅผ ์œ„ํ•ด SIFT, SURF, ORB ๋“ฑ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜๋“ค์€ ์ด๋ฏธ์ง€์—์„œ ํŠน์ง•์ ์„ ๊ฒ€..
[OpenCV] Template Matching ํ…œํ”Œ๋ฆฟ ๋งค์นญ | ์ด๋ฏธ์ง€์—์„œ ์œ ์‚ฌํ•œ ๋ถ€๋ถ„ ์ฐพ์•„๋‚ด๊ธฐ
ยท
๐Ÿ’ป Programming/Computer Vision
Template Matching ์ด๋ฏธ์ง€ ํ…œํ”Œ๋ฆฟ ๋งค์นญ์€ ๋Œ€์ƒ ์ด๋ฏธ์ง€์—์„œ ์ž‘์€ ์ด๋ฏธ์ง€(ํ…œํ”Œ๋ฆฟ)๋ฅผ ์ฐพ๋Š” ๊ธฐ์ˆ ๋กœ, ์ปดํ“จํ„ฐ ๋น„์ „ ๋ถ„์•ผ์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ์ˆ  ์ค‘ ํ•˜๋‚˜์ด๋‹ค. OpenCV์—์„œ๋Š” cv2.matchTemplate() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€ ํ…œํ”Œ๋ฆฟ ๋งค์นญ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด ํ•จ์ˆ˜๋Š” ์ž…๋ ฅ ์ด๋ฏธ์ง€์™€ ํ…œํ”Œ๋ฆฟ ์ด๋ฏธ์ง€๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„์„œ, ์ž…๋ ฅ ์ด๋ฏธ์ง€์—์„œ ํ…œํ”Œ๋ฆฟ๊ณผ ๊ฐ€์žฅ ์œ ์‚ฌํ•œ ๋ถ€๋ถ„์„ ์ฐพ์•„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋”ฅ๋Ÿฌ๋‹์„ ์‚ฌ์šฉํ•œ ๋ฐฉ๋ฒ•์ฒ˜๋Ÿผ ๊ฐ์ฒด์˜ deformation์ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋„ ์ž˜ ๋งค์นญ๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์•„๋‹ˆ์ง€๋งŒ ํ…œํ”Œ๋ฆฟ ์ด๋ฏธ์ง€์™€ ์•„์ฃผ ์œ ์‚ฌํ•œ ๋ถ€๋ถ„์ด ์ž…๋ ฅ ์ด๋ฏธ์ง€์— ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ๊ฐ€์žฅ ํฐ ๋‹จ์ ์€ opencv์˜ ํ…œํ”Œ๋ฆฟ ๋งค์นญ์€ ํ…œํ”Œ๋ฆฟ ์ด๋ฏธ์ง€๋กœ ๋Œ€์ƒ ์ด๋ฏธ์ง€๋ฅผ ์Šฌ๋ผ์ด๋”ฉ ํ•˜๋Š”๋ฐ, ์ด๋•Œ ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ ์‚ฌ์ด์ฆˆ๋ฅผ ..
[OpenCV] Image Contour ์ถ”์ถœ | ์ด๋ฏธ์ง€ ์ปจํˆฌ์–ด | ๊ฐ์ฒด ์œค๊ณฝ์„  ์ถ”์ถœ | ๊ธฐ์ดˆ์ ์ธ segmentation ๋ฐฉ๋ฒ•
ยท
๐Ÿ’ป Programming/Computer Vision
Image Contour (์ด๋ฏธ์ง€ ์œค๊ณฝ์„ ) ์ด๋ฏธ์ง€ ์œค๊ณฝ์„ (contour)์€ ์ด๋ฏธ์ง€์—์„œ ๊ฐ์ฒด(object)์˜ ์™ธ๊ณฝ ๊ฒฝ๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ณก์„ ์ด๋‹ค. ์ด๋Ÿฌํ•œ ์œค๊ณฝ์„ ์€ ๊ฐ์ฒด์˜ ํ˜•ํƒœ, ํฌ๊ธฐ, ๋ฐฉํ–ฅ ๋“ฑ์˜ ์ •๋ณด๋ฅผ ์ถ”์ถœํ•˜๋Š” ๋ฐ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ด๋ฏธ์ง€์—์„œ ๊ฐ์ฒด์˜ ์œ„์น˜๋‚˜ ํฌ๊ธฐ๋ฅผ ๊ฒ€์ถœํ•˜๊ณ , ๊ฐœ์ฒด์˜ ์™ธ๊ณฝ์„ ์ถ”์ถœํ•˜๊ฑฐ๋‚˜, ๊ฐœ์ฒด๋ฅผ ๋ถ„ํ• (segmentation)ํ•˜๊ธฐ ์œ„ํ•ด ์œค๊ณฝ์„ ์„ ์ถ”์ถœํ•œ๋‹ค. ์œค๊ณฝ์„ ์„ ์ถ”์ถœํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋Œ€๊ฐœ ์ด๋ฏธ์ง€์˜ ์ด์ง„ํ™”(binary) ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค. ์ด์ง„ํ™”๋œ ์ด๋ฏธ์ง€์—์„œ๋Š” ํฐ์ƒ‰ ํ”ฝ์…€์€ ๊ฐœ์ฒด๋ฅผ, ๊ฒ€์€์ƒ‰ ํ”ฝ์…€์€ ๋ฐฐ๊ฒฝ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ด์ง„ํ™”๋œ ์ด๋ฏธ์ง€์—์„œ ์œค๊ณฝ์„ ์„ ์ถ”์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ์ง€๋งŒ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์€ cv2.findContours ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด ํ•จ์ˆ˜๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ ์ด๋ฏธ์ง€์—์„œ ์œค๊ณฝ์„ ์„ ..
[OpenCV] Morphological Operations ๋ชจํด๋กœ์ง€ ์—ฐ์‚ฐ | ๊ฐ์ฒด์˜ ๋‚ด๋ถ€ ์ฑ„์šฐ๊ธฐ | ๊ฐ์ฒด์˜ ๊ฒฝ๊ณ„ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ | ๊ฐ์ฒด์˜ ํฌ๊ธฐ ์ค„์ด๊ธฐ | ๊ฐ์ฒด ์—ฐ๊ฒฐํ•˜๊ธฐ | ๊ฒฝ๊ณ„ ๊ฐ•์กฐํ•˜๊ธฐ
ยท
๐Ÿ’ป Programming/Computer Vision
Morphological Operations (๋ชจํด๋กœ์ง€ ์—ฐ์‚ฐ) ๋ชจํด๋กœ์ง€ ์—ฐ์‚ฐ์€ ์ด๋ฏธ์ง€ ๋‚ด ๊ฐ์ฒด์˜ ํ˜•ํƒœ, ํฌ๊ธฐ, ๊ตฌ์กฐ ๋“ฑ์„ ๋ถ„์„ํ•˜๊ฑฐ๋‚˜ ๋ณ€ํ˜•ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ์ˆ ์ด๋‹ค. ์ฃผ๋กœ ๋ฐ”์ด๋„ˆ๋ฆฌ ์ด๋ฏธ์ง€(ํ‘๋ฐฑ ์ด๋ฏธ์ง€)์—์„œ ์‚ฌ์šฉ๋˜๋ฉฐ, ๊ฐ์ฒด์˜ ํ˜•ํƒœ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ์ด๋ฏธ์ง€ ๋‚ด์˜ ๊ตฌ๋ฉ์„ ์ฑ„์šฐ๊ฑฐ๋‚˜, ๊ฐ์ฒด์˜ ํฌ๊ธฐ๋ฅผ ์กฐ์ ˆํ•˜๊ฑฐ๋‚˜, ๊ฐ์ฒด ๊ฐ„์˜ ๊ฑฐ๋ฆฌ๋ฅผ ์กฐ์ ˆํ•˜๋Š” ๋“ฑ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ชจํด๋กœ์ง€ ์—ฐ์‚ฐ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ตฌ์กฐ ์š”์†Œ(structuring element)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰๋˜๋Š”๋ฐ ๊ตฌ์กฐ ์š”์†Œ๋Š” ์ด๋ฏธ์ง€ ๋‚ด์—์„œ ๊ฐ์ฒด์˜ ํ˜•ํƒœ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ธฐ์ค€์ด ๋œ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๊ตฌ์กฐ ์š”์†Œ๋Š” ์‚ฌ๊ฐํ˜•, ์›, ์‹ญ์ž๊ฐ€ ๋“ฑ์˜ ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง€๋ฉฐ, ๋ชจ์–‘๊ณผ ํฌ๊ธฐ๋Š” ์ž‘์—…์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ์„ ํƒ๋œ๋‹ค. ๋ชจํด๋กœ์ง€ ์—ฐ์‚ฐ์—๋Š” ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜๊ฐ€ ์žˆ์ง€๋งŒ, ๋Œ€ํ‘œ์ ์œผ๋กœ ํŒฝ์ฐฝ(dilation), ์นจ์‹..
[OpenCV] Perspective Transformation (์›๊ทผ ๋ณ€ํ™˜) | ์™œ๊ณก๋œ ์˜์ƒ์„ ํŽด์ฃผ๋Š” ๋ฐฉ๋ฒ•
ยท
๐Ÿ’ป Programming/Computer Vision
Geometric Transformation ์˜์ƒ์€ ๊ธฐํ•˜ํ•™์  ๋ณ€ํ™˜์„ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜๋  ์ˆ˜ ์žˆ๋Š”๋ฐ ์ž์œ ๋„์— ๋”ฐ๋ผ translation, eclidean,similarity, affine, perspective(projective) ๋ณ€ํ™˜์œผ๋กœ ๋‚˜๋‰œ๋‹ค. ์ด ์ค‘์—์„œ perspective transformation์˜ ์ž์œ ๋„๊ฐ€ ๊ฐ€์žฅ ํฌ๋‹ค. ๋‹ค์‹œ ๋งํ•ด ๊ฐ€์žฅ ๋งŽ์€ ๋ณ€ํ˜•์„ ์ค„ ์ˆ˜ ์žˆ๋Š” ๋ณ€ํ™˜์ด๋ผ๋Š” ๋œป์ด๋‹ค. ๋‹ค์–‘ํ•œ ์ปดํ“จํ„ฐ ๋น„์ „ ํ”„๋กœ์ ํŠธ์—์„œ ์นด๋ฉ”๋ผ์˜ ๊ฐ๋„์— ๋”ฐ๋ผ ์™œ๊ณก๋˜๋Š” ๊ฐ์ฒด๋‚˜ ํ…์ŠคํŠธ ๋“ค์„ ์ •๋ฉด์œผ๋กœ ๋ฐ”๋ผ๋ณด๋Š” view๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด affine ๋˜๋Š” perspective transformation์ด ์‚ฌ์šฉ๋œ๋‹ค. Perspective Transformation ๊ทธ ์ค‘์—์„œ ๊ฐ€์žฅ ํฐ ์ž์œ ๋„๋ฅผ ๊ฐ€์ง€๋Š” perspective tr..
[pytorch]Box operator๋กœ Bounding Box ์‰ฝ๊ฒŒ ๋‹ค๋ฃจ๊ธฐ
ยท
๐Ÿ’ป Programming/AI & ML
torchvision.ops torchvision.ops ์—์„œ๋Š” computer vision ๊ด€๋ จ ๊ฐ์ข… operator ๋“ค์„ ์ œ๊ณตํ•˜๋Š”๋ฐ, ๊ทธ์ค‘์—์„œ Bounding Box๋ฅผ ๋‹ค๋ฃจ๋Š” Box Operators๋ฅผ ์†Œ๊ฐœํ•œ๋‹ค. Detection ๊ด€๋ จ ์ฝ”๋“œ๋ฅผ ๋งŒ์ง€๋‹ค๋ณด๋ฉด bounding box๋ฅผ ๋‹ค๋ฃฐ ์ผ์ด ๋งŽ์€๋ฐ, torchvision.ops ์—์„œ๋Š” bactch ๋‹จ์œ„๋กœ ์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅํ•œ ๊ฐ์ข… ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•œ๋‹ค. * box ๋ฉด์ , box๊ฐ„์˜ iou, box format ๋ณ€๊ฒฝ, clip ๋“ฑ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅ ํ…Œ์ŠคํŠธ box 3๊ฐœ๋ฅผ ์ •์˜ํ•˜๊ณ  ์•ž์„œ ์‚ดํŽด๋ณธ box operator ๊ธฐ๋Šฅ๋“ค์„ ํ…Œ์ŠคํŠธ import numpy as np import cv2 import torch from torchvision.ops import * # boxes ..