두번째로 공부해볼것은 임계값 영상(threshold)


임계값 영상은 입력영상의 밝기값 r이 주어진 임계값(threshold)보다 크면 max_value, 그렇지 않으면 0으로 출력 영상의 발기값 s를 설정한다.


threshold 함수는 다양한 임계값 종류를 제공한다. 임계값 영상은 영상을 분할하는 가장 간단한 방법이다.


double threshold(InputArray src, OutputArray dst, double thresh, double maxval, int type);



첫번째 사진은 기본 이미지의 GrayScale,  두번째는 thresh(임계값) = 100, max_value = 255 일때, 세번째는 두번째와 조건은 같고 Otsu 알고리즘을 적용한것이다.


using namespace cv;

using namespace std;

int main()

{

Mat srcImage = imread("picca.jpg", IMREAD_GRAYSCALE);

if (srcImage.empty())

return -1;


Mat dstImage1;

double th1 = threshold(srcImage, dstImage1, 100, 255, THRESH_BINARY); // 임계값 = 100 ,  100 보다 낮으면  밝기를 0으로   ,  100 보다 높으면 255로 준다.

cout << "th1 = " << th1 << endl;


Mat dstImage2;

double th2 = threshold(srcImage, dstImage2, 100, 255, THRESH_BINARY + THRESH_OTSU);

cout << "th2 = " << th2 << endl;


imshow("picca.jpg",srcImage);

imshow("dstImage1",dstImage1);

imshow("dstImage2",dstImage2);

waitKey(0);

return 0;


'프로젝트(영상처리)' 카테고리의 다른 글

3. Canny 에지 검출  (0) 2017.03.10
2. 프로젝트 준비 !  (0) 2017.02.19
1. 프로젝트 선정 및 제안 배경  (0) 2017.02.19
Visual studio 2015 c++ opencv(3.2)환경설정  (0) 2017.02.13

현재 목표는 격자 패턴을 이용하여 사물의 크기(size)를 측정하는 것.


각 패턴의 길이와 패턴 사이사이 길이는 정해져 있다.  격자 위에 사물을 놓을 경우  격자를 이용하여 크기를 구할 수 있다.






위 목표를 하기에 앞서 필요한 함수들을 먼저 공부하는 시간을 갖겠다.


첫번째는 canny 에지 검출 (2진화)


에지(edge)는 영상의 물체와 물체 사이 또는 물체와 배경 사이의 경계에서 발생한다.


#include<opencv2\opencv.hpp>

using namespace cv;

using namespace std;

int main()

{

Mat srcImage = imread("picca.jpg", IMREAD_GRAYSCALE);

Mat srcImage2 = imread("picca.jpg",IMREAD_COLOR);

if (srcImage.empty())

return -1;

Mat edges;

Mat edges2;

Canny(srcImage, edges, 50, 100);

Canny(srcImage2, edges2, 50, 100);

imshow("srcImage",srcImage);

imshow("edges",edges);

imshow("srcImage2", srcImage2);

imshow("edges2", edges2);


waitKey(0);

return 0;

}


void canny(InputArray image, OutputArray edges, double threshold1, double threshold2);


연결된 에지를 얻기 위하여 두 개의 임계값(threshold1, threshold2)을 사용한다. 먼저 높은 값의 임계값(threshold1)을 사용하여 그래디언트 방향에서 낮은 값의 임계값(threshold2)이 나올때 추적하며 에지를 연결하는 히스테리시스 임계값 방식을 사용한다


위에것은 grayscale(흑백)    아래것은 color로 edge 검출을 한것.






이번에 프로젝트는 2~3개월로 잡고 있고, 만드려는 것은 사람 이미지를 입력시 , 그 영상을 분석하여 알맞은 옷의 사이즈를 나타내주는 프로그램을 만들려


고한다.  


참고 :   open CV 예제 소스코드   http://coyagi.tistory.com



※알고리즘 시간 이후 스탠드 업 미팅 실시

스탠드 업 미팅이란?  회의를 짧게 유지하도록 해주는 것으로서 결과적으로 오랫동안 진행되지 않는 것이 주 목표이다. 회의에 집중도를 높이기 위해서 모든 사람은 아래의 질문 세가지에 대답 하는 방식으로 내용을 간단하게 한다.

-내가 달성한 일은 무엇인가? -오늘 계획한 일은 무엇인가? -문제나 어려운 점은 무엇인가?

참석자마다 말할 수 있는 시간은 짧게 주어진다.(2분의 브리핑) 무엇인가 상세하게 논 의해야할 문제가 있다면 미팅 이후에 해당 인원만 모이도록 한다.(중요!!)


※Poc, Piolet, BMT 개발 단계 돌입

POC (Proof Of Concept)이란? 기존에 시장에서 사용돼지 않던, 신기술을 프로젝트에 도입하기에 앞서, 검증하기 위한 목적으로 사용. 사업과 관계가 약간은 동떨어진 기술 검토를 위한 프로젝트고객사에서 하고, 업무는 아 주 간단한 것을 수반. 신기술 여부는 중요치 않음

Pilot이란? 이미 검증된 기술을 가지고, 대규모 프로젝트 진행에 앞서 소규모로 진행해보는 시험 프로젝트를 말함. 본사업(프로젝트) 진행을 위한 수행안 검증 프로젝트로 가령 기술셋을 확정했으면 그 기술셋으로 실제 업무에 적용해보고 문제점이나 개선안을 마련해서 본 프로젝트에 피 드백 주는 것 (계획, 기술문제, 관리요소, 위험요소, 비용 이런 것을 피드백하는 용도, 당초 기대한 효과에 비해 결과가 너무 미미하거나 비용이 많이 들면 취소)


BMT(Bench Marking Test)이란? 말그대로 성능테스트이다. 예를 들면 00발주처에서 테라바이트 라우터를 도입한다고 할때, 입찰에 응한 업체들의 제품에 대해서 성능비교를 하는 것. 필요에 의해 이것 저것 골라다가 테스트해보고 비교하는 것. 장비 뿐만이 아니라 소프 트웨어(솔루션)도 포함됨 (대부분은 수평적으로 기술셋 비교에 대한 내용이 많지만 업 무적 특성을 포괄하는 솔루션인가? 이러한 요건이면 업무도 물론 수반)

프로젝트 활동 : Ⅰ. 격자 모양지 형식 패턴 실패이유 분석 Ⅱ. 오차범위가 적게 드는 알맞은 선의 두께를 찾는다. 


Ⅰ. 격자 모양지 형식 패턴 실패이유 분석

실패 이유 :  배경이 흰색이고, 선이 검정색이면 안된다. 배경은 검정색이고 선은 흰색이여야 한 다.이유는 다음과 같다. 이유는 카메라의 조리개의 특성에 있다. 카메라의 조리개는 어 두울 때 조리개를 가장 많이 열어 빛을 많이 모아서 잘 보이게 하는 역할을 갖고 있 다. 따라서 배경이 검정색이면 조리개를 많이 열기 때문에 빛을 많이 모으게 되고 흰 색선이 더 뚜렷하게 보이기 때문이다. 

배경이 흰색이라면 조리개를 많이 열지 않아 빛을 많이 모으지 않기 때문에 검정색 선 이 잘 보이지 않을 수가 있다. 또한 흰색이 배경일 경우 왜곡과 굴절이 더 잘 생길수 있다.








판넬 모양 종이지 형식패턴 :

총 개수 : 3 장 너비 : 1m 높이 : 2m

배경 : 검정색 선의 색깔 : 흰색 선의 두께 : ???

격자패턴 : 가로 : 10/ 세로 : 10 

격자패턴 : 가로 : 15/ 세로 : 15 

격자패턴 : 가로 : 20/ 세로 : 20


오차범위가 적게 드는 알맞은 선의 두께를 찾는다는 의미를 해석하면 다음과 같다. 위 그림을 보자 위와 같이 사각형이 있을 때 색칠한 부분이 선의 두께가 될 것이다. 선의 두께가 두꺼워 질수록 격자 길이를 재는데 오차가 생길 수 있다. 

양쪽 끝점을 판단하여 길이를 구한다면 문제가 발생하지 않는다. 하지만 아래의 예시 그림을 보자 선의 중점에서부터 다음 선의 중점까지의 길이를 재서 받아오면 문제가 생긴다. 따라서 적당한 오차율이 생기는 알맞은 선의 두께를 찾는 것이 오늘 프로젝트 의 목표이다.








요즘 세상엔 영상처리를 통해 인간의 생활의 편리함이 더욱더 넓어 지고 있다.


영상처리 기술의 적용 사례들을 설명하자면 


- 생활분야(보안을 위한 홍채인식, QR코드 , 블랙박스와 CCTV에서의 차량 인식 및 사람 인지) 


- 의료분야(X-ray , 초음파 영상, CT, 자기 공명 영상기술 - MRI)


------------------------------------------------------------------------------------------------------------------------------------------------------------------------


이러한 영상처리 기술은 딥러닝 기술 주요 응용 분야중 하나인데  3가지의 이유를 들자면 



l  영상 내 분석 대상의 복잡한 특징을 추출하는 기능을 학습하기 위해서는 데이터로부터 고수준 특징을 학습할 수 있는 능력이 필요한데 딥러닝 기술이 이러한 특징을 가지고 있음


l  기존 특징 추출 및 분류 모델은 화소,에지(edge),명도 변화의 방향, 좁은 영역의 텍스처 등의 저수준 특징을 이용하여 높은 성능을 얻기 어려우며 대상 간 겹침등 노이즈에 따른 환경 변화에 잘 적응하지 못함


l  ,,입의 형태 및 위치와 같은 고수준 특징을 이용할 경우 딥러닝 기술 적용하면 정확하고 안정적인 성능을 얻을 수 있음.



딥러닝 기반 영상처리 응용 서비스 동향

1.    페이스북 모먼트앱  (2015)

모먼트 앱은 사용자가 스마트폰으로 찍은 사진을 페이스북에 올리지 않고도 개인적으로 친구들과 공유하게 해주는 앱이다. 모먼트 앱은 사진에 포함된 사람들의 얼굴을 인식해 그룹으로 분류해주고 개별적으로 사진을 보낼 수 있게 해준다.

2.    마이크로소프트 아담 프로젝트 (2014)

프로젝트 아담은 1400만개의 Web에 저장된 이미지를 파악하며사용자가 생성한 태그에서 도출된 22,000개의 카테고리로 구성 Flickr와 같은 사이트 대규모 데이터 세트 기억하여 사진을 보고 누구인지를 파악하거나 동물이나 물체를 인식하여 알려준다.

 

3.    구글 구글포토 (2015)

구글포토에서 검색 기능은 예를 들면 음식이나 노트북이라는 검색어를 사용해서 내가 저장해둔 이미지들을 검색하면 별도의 태깅을 해두지 않았는데도 해당되는 이미지를 찾아준다.        

더 놀라운 기능은 지오태깅 (사진 또는 동영상 촬영시 자동적으로 GPS정보가 남음)이 안되어 있는 사진의 장소도 식별해낼 수 있고, 사진에 촬영된 인물까지 판단해낸다.

                  

4.    현대자동차 자율주행자동차 (2017CES 자율주행성공) 1 ~ 5단계중 4단계 통과

4단계 : 운전자가 정해진 조건에서 운전에 전혀 개입하지 않고, 시스템은 정해진 조건 내 모든 상황에서 차량의 속도와 방향을 통제하는 등 적극적인 주행을 하게 된다. 사실상 3단계에서 4단계로 넘어가는 것이 업계에 주어진 가장 힘든 도전

5단계 : 완전 자율

 

여기서 쓰이는 가장 간단한 기술 스테레오 카메라를 이용하여 앞유리 상단, 백미러 앞쪽에 좌우로 두개를 달고, 양안의 차이를 이용해 상대 물체와의 거리를 인식 , 영상 처리를 이용하여 거리 조절



조사해보니 정말 다양한 분야에서 영상처리 기술이 쓰여지고 있었고 , 미래에도 정말 다양하게 쓰일꺼라 생각해서

영상처리 기술에 관련된 프로젝트를 하기로 마음 먹었다.



'프로젝트(영상처리)' 카테고리의 다른 글

4. 임계값 영상 (threshold)  (0) 2017.03.10
3. Canny 에지 검출  (0) 2017.03.10
2. 프로젝트 준비 !  (0) 2017.02.19
Visual studio 2015 c++ opencv(3.2)환경설정  (0) 2017.02.13

설치 방법


1. OpenCV 홈페이지에서 운영체제에 알맞은 설치파일 다운 (http://opencv.org/)


2. open cv 설치 (설치경로)



3. 환경 변수 설정


제어판 -> 고급 시스템 설정 -> 환경 변수


PATH 클릭한 뒤  편집(E) 누르기,  변수값에 위에  OPENCV 설치경로를 기준으로 C:\opencv\build\x64bin 을 넣으면 됨




4. VISUAL STUDIO를 켜고 C++ project를 만든다.



5. Debug 와 Releas x64 환경설정


6. TEST


여기서 안돌아가는 사람도 있을텐에 , 아마 대부분 경로 문제일것이다.

이떄 경로를 123.jpg 대신 C:/Users/eunchan/Documents/Visual Studio 2015/Projects/opop/123.jpg 절대경로로 넣으면 될것이다.


'프로젝트(영상처리)' 카테고리의 다른 글

4. 임계값 영상 (threshold)  (0) 2017.03.10
3. Canny 에지 검출  (0) 2017.03.10
2. 프로젝트 준비 !  (0) 2017.02.19
1. 프로젝트 선정 및 제안 배경  (0) 2017.02.19

+ Recent posts