728x90

πŸ“˜ Programming/OpenCV 22

[μ˜μƒ 처리] 컬러 λͺ¨λΈ ( RGB, CMY, HSI )κ°„μ˜ 관계와 λ³€ν™˜

컬러 λͺ¨λΈ 색을 ν‘œν˜„ν•˜κ³ μž ν•˜λŠ” 방식이라 ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λŒ€ν‘œμ μœΌλ‘œ RGB, CMY, HSIκ°€ μžˆμŠ΅λ‹ˆλ‹€. RGB 컬러 λͺ¨λΈ ​ RGB 컬러 λͺ¨λΈμ€ λΉ¨κ°•, 초둝, νŒŒλž‘μ΄λΌλŠ” 3κ°€μ§€ 색상 값을 μ΄μš©ν•΄μ„œ 색을 ν‘œν˜„ν•©λ‹ˆλ‹€. 색을 ν˜Όν•©ν• μˆ˜λ‘ 색이 λ°μ•„μ§€λŠ” 가산체계(Additive System)을 μ‚¬μš©ν•©λ‹ˆλ‹€. ​ 1) RGBλ₯Ό 같은 λΉ„μœ¨λ‘œ ν˜Όν•© → κ°€μž₯ 밝은 흰색 Red(1, 0, 0) + Green(0, 1, 0) + Blue(0, 0, 1) = White(1, 1, 1) ​ 2) 빨강색 + μ΄ˆλ‘μƒ‰ → λ…Έλž€μƒ‰ Red(1, 0, 0) + Green(0, 1, 0) = Yellow(1, 1, 0) ​ 3) μ΄ˆλ‘μƒ‰ + νŒŒλž€μƒ‰ → 청둝색 Green(0, 1, 0) + Blue(0, 0, 1) = Cyan(0, 1, 1..

[μ˜μƒ 처리] μΈκ°„μ˜ λΉ›, κ°€μ‹œκ΄‘μ„ κ³Ό μƒ‰μ˜ ν‘œν˜„

λΉ›κ³Ό 색 인간은 인간이 λ³Ό 수 μžˆλŠ” λΉ›μ˜ μ˜μ—­μΈ κ°€μ‹œκ΄‘μ„ μœΌλ‘œ 색을 μΈμ‹ν•©λ‹ˆλ‹€. 파μž₯의 길이에 따라 μ„±μ§ˆμ΄ λ³€ν™”ν•˜μ—¬ 각각의 μƒ‰κΉ”λ‘œ λ‚˜νƒ€λƒ…λ‹ˆλ‹€. 빨간색에 κ°€κΉŒμšΈμˆ˜λ‘ 파μž₯이 κΈΈκ³ , 보라색에 κ°€κΉŒμšΈμˆ˜λ‘ 파μž₯이 μ§§μŠ΅λ‹ˆλ‹€. ​ 컬러 곡간은 μ–΄λ–€ 색깔과 λ‹€λ₯Έ μƒ‰κΉ”κ³Όμ˜ 관계λ₯Ό ν‘œν˜„ν•˜κΈ° 쒋은 논리적인 λ°©λ²•μž…λ‹ˆλ‹€. μš°λ¦¬κ°€ ν”νžˆ μ•„λŠ” RGBλŠ” λΉ¨κ°•, 초둝, νŒŒλž‘μœΌλ‘œ μ—¬λŸ¬ 색을 ν‘œν˜„ν•©λ‹ˆλ‹€. λ˜ν•œ, 컬러 곡간 HSIλŠ” 색상, 채도, λͺ…λ„λ‘œ μ—¬λŸ¬ 색을 ν‘œν˜„ν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ, κ°€μ‹œκ΄‘μ„  이외에 색도 μžˆμŠ΅λ‹ˆλ‹€. 적외선은 빨간색 λ°”κΉ₯의 μƒ‰μœΌλ‘œ 빨간색 보닀 파μž₯이 κΈ΄ κ΄‘μ„ μž…λ‹ˆλ‹€. 주둜, μ—΄ κ°μ§€λ‚˜ ꡰ사, μ˜λ£Œμ— μ‚¬μš©λ©λ‹ˆλ‹€. μžμ™Έμ„ μ€ 보라색 λ°”κΉ₯의 μƒ‰μœΌλ‘œ 보라색 보닀 파μž₯이 짧은 κ΄‘μ„ μž…λ‹ˆλ‹€. ν”ΌλΆ€ λ…ΈμΆœμ΄ 많으면 ν”ΌλΆ€ 암을 μΌμœΌν‚΅λ‹ˆλ‹€. 눈의 ..

[μ˜μƒ 처리] λ””μ§€ν„Έ μ˜μƒμ²˜λ¦¬λž€ ?

μ˜μƒμ²˜λ¦¬ (Digital Image Processing) μ˜μƒμ€ 2차원 ν•¨μˆ˜μΈ f(x,y)둜 μ •μ˜λ©λ‹ˆλ‹€. ​ μ•„λž˜ 그림은 λ””μ§€ν„Έ 이미지λ₯Ό μ’Œν‘œμƒμœΌλ‘œ ν‘œν˜„ν•œ κ·Έλ¦Όμž…λ‹ˆλ‹€. ​ λ””μ§€ν„Έ μ΄λ―Έμ§€λŠ” ν™”μ†Œ(Pixel)μ΄λΌλŠ” λ‹¨μœ„λ‘œ μ„Έλ°€ν•˜κ²Œ 2차원 ν˜•νƒœλ‘œ ν‘œν˜„λ©λ‹ˆλ‹€. ν™”μ†ŒλŠ” 2차원적 ν‘œν˜„μœΌλ‘œ x와 y의 κ°’μœΌλ‘œ μœ„μΉ˜λ₯Ό λ‚˜νƒ€λ‚΄λŠ” 곡간 μ’Œν‘œ(Spatial Coordiantes)둜 ν‘œν˜„ν•©λ‹ˆλ‹€. ​ λ˜ν•œ, ν•΄λ‹Ή μ’Œν‘œ (x, y)의 크기인 f(x, y)λŠ” ν•΄λ‹Ή ν™”μ†Œμ˜ 밝기(Intensity)​λ₯Ό ν‘œν˜„ν•©λ‹ˆλ‹€. λ˜λŠ” νšŒμƒ‰λ„(Gray Level)이라고도 ν•©λ‹ˆλ‹€. λ””μ§€ν„Έ μ˜μƒμ˜ 쑰건 1) x, y, f의 크기 값이 λͺ¨λ‘ μœ ν•œν•΄μ•Ό ν•œλ‹€. 2) x, y, f의 크기 값이 λͺ¨λ‘ 이산적인 값이어야 ν•œλ‹€. λ””μ§€ν„Έ μ‹ ν˜Έμ˜ μž₯점 1) λ””μ§€ν„Έ 데이터..

[OpenCV] μ˜μƒμ˜ ν™”μ†Œ(Pixel) κ°’ 읽기

μ†ŒμŠ€ μ½”λ“œ μœ„ 이미지 νŒŒμΌμ„ λ‹€μš΄λ‘œλ“œν•΄μ€μ‹œλ‹€. μœ„ μ˜μƒμ˜ ν™”μ†Œ 값을 μ½μ–΄μ˜€λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•΄λ΄…μ‹œλ‹€ μž…λ ₯된 μ˜μƒ 파일의 ν™”μ†Œ 값을 좜λ ₯ν•˜λŠ” μ†ŒμŠ€μ½”λ“œμž…λ‹ˆλ‹€. 즉, μ˜μƒμ˜ 각 ν”½μ…€ 값을 λͺ¨λ‘ 좜λ ₯ν•΄μ€λ‹ˆλ‹€. μ•„λž˜λŠ” μ†ŒμŠ€μ½”λ“œμž…λ‹ˆλ‹€. OpenFileDialog() 둜 μ˜μƒ νŒŒμΌμ„ λΆˆλŸ¬μ˜΅λ‹ˆλ‹€. #include #include #include #include #include using namespace std; using namespace cv; string OpenFileDialog() { char name[MAX_PATH] = { 0, }; OPENFILENAMEA ofn; ZeroMemory(&ofn, sizeof(ofn)); ofn.lStructSize = sizeof(OPENFILENAMEA); ofn.hw..

[OpenCV] 그레이 μŠ€μΌ€μΌ(Gray Scale) μ˜μƒ λ§Œλ“€κΈ°

μ†ŒμŠ€μ½”λ“œ #include #include #include #include #include using namespace std; using namespace cv; void CreateGrayScaleImage() { // 그레이 μŠ€μΌ€μΌ μ˜μƒ λ§Œλ“€κΈ° Mat im1(32, 256, CV_8UC1, Scalar(0)); // 그레이 ν”½μ…€ λ ˆλ²¨μ„ μ΄ˆκΈ°ν™” for (int i = 0; i < im1.rows; i++) for (int j = 0; j < im1.cols; j++) im1.at(i, j) = j; // imshow()둜 λ§Œλ“  Mat μ˜μƒ 좜λ ₯ imshow("im1", im1); waitKey(); } int main() { CreateGrayScaleImage(); } μ˜μƒμ„ λ§Œλ“œλŠ” 방법 쀑 그레이 ..

[OpenCV] OpenCV μ‹œμž‘ν•˜κΈ°(μ„€μΉ˜, ν™˜κ²½ μ„€μ •, 파일 뢈러였기)

OpenCV(Open source Computer Vision) LibraryOpenCV λŠ” μ˜€ν”ˆ μ†ŒμŠ€ 컴퓨터 λΉ„μ „ 및 기계 ν•™μŠ΅ μ†Œν”„νŠΈμ›¨μ–΄ λΌμ΄λΈŒλŸ¬λ¦¬μž…λ‹ˆλ‹€. 컴퓨터 ν•™μŠ΅, 컴퓨터 λΉ„μ „, μ•Œκ³ λ¦¬μ¦˜, μˆ˜ν•™ μ—°μ‚°, λΉ„λ””μ˜€ 캑처, 이미지 처리 λ“±κ³Ό 같은 λ‹€μ–‘ν•œ λͺ©μ μ— μ‚¬μš©λ©λ‹ˆλ‹€. https://sourceforge.net/projects/opencvlibrary/files/4.1.1/opencv-4.1.1-vc14_vc15.exe/download μœ„ url 접속 ν›„ 5μ΄ˆκ°€ μ§€λ‚˜λ©΄ μžλ™ λ‹€μš΄λ‘œλ“œκ°€ λ©λ‹ˆλ‹€. 압좕을 ν’€κ³  μ„€μΉ˜λ₯Ό ν•˜μ‹€ λ•Œ, Cλ“œλΌμ΄λΈŒμ— μ„€μΉ˜ν•˜λ©΄ νŽΈν•©λ‹ˆλ‹€. ν”„λ‘œμ νŠΈ 생성 OpenCV ν™˜κ²½ μ„€μ • 메뉴 λ°”μ—μ„œ [ν”„λ‘œμ νŠΈ(P)] →[속성(P)]둜 λ“€μ–΄κ°‘λ‹ˆλ‹€. μ•„λž˜ 사진과 같이 μ„€μ •ν•΄μ£Όμ„Έμš”. μ‹€μŠ΅ - 이미지..

λ°˜μ‘ν˜•