반응형
자유도(Degree of Freedom)에 대한 설명은, 다음 사이트에서 찾을 수 있다.

기존에 만들었던 떨림보정에서, 자유도를 낮추는 작업을 하였다.

기존 떨림보정은, 자유도가 6이었다.

수정본의 자유도는, 4와 2이다.

PTZ로 고정되어 있는 상태에서, 바람에 의해 화면이 약간 떨리는 정도라면,

CCTV의 화면이 뒤집히거나 상하 또는 좌우 반전이 될 일이 없다.

따라서, 자유도 2의 보정으로도 충분할지 모른다.


자유도를 낮추어서 얻을 수 있는 잇점은,

화질이 좋지 않을 때 떨림보정으로 인해

화면이 이상하게 뒤집히거나 기울어지는 현상을 방지할 수 있다는 것이다.


아래의 테스트 화면을 보면,

자유도 4의 경우에는 회전까지 보정이 되고,

자유도 2의 경우에는 상하좌우 움직임만 보정이 된다.

  • 원본



  • 자유도 4


  • 자유도 2




반응형
반응형

  • OpenCV Extra Modules 소개
    1. 다음 사이트에 가면, OpenCV Extra Modules에 대해 잘 소개되어 있다.
    2. 내용인즉슨, 새로운 API가 OpenCV에 추가되는 경우, 아직 안정성이나 성능이 검증되지 않았으므로, 처음에는 공식 배포본 대신, Extra Modules(opencv_contrib)에 포함시킨다.
    3. 이후 안정성이 검증되고 사용 빈도가 많아지면, 메인 모듈(공식 배포본)에 포함되어 배포된다.


  • OpenCV Extra Modules 빌드 방법
    1. 다음 사이트의 [Download ZIP] 버튼을 통해, opencv-contrib-master.zip 파일을 다운로드 받는다.
    2. 압축을 해제한다.
    3. 다음 사이트 내용을 참고하여, OpenCV 빌드를 준비한다.(7번까지 진행)
    4. CMake GUI화면의 'OPENCV_EXTRA_MODULES_PATH'항목에 [opencv-contrib-master폴더]/modules를 선택해 준다.
    5. http://pgmaru.tistory.com/53의 8번부터 계속 진행한다.


  • VisualStudio2008로 빌드할 경우의 문제해결 방법
    • CMake를 통해 솔루션이 생성된 다음, VisualStudio2008로 빌드를 진행하게 되면, 몇몇 파일에서 컴파일 에러가 발생한다.
    • 빌드 진행을 위해서는, 다음과 같이 소스를 수정해 주어야 한다.
      1. [opencv-contrib-master폴더]/modules/line_descriptor/samples/knn_matching.cpp의 114행
        • result += (uchar) ( bin_vector[i] * pow( 2, i ) );
        • result += (uchar) ( bin_vector[i] * pow( 2.0, i ) );
        • 으로 변경해 준다
      2. [opencv-contrib-master폴더]/modules/optflow/samples/optical_flow_evaluation.cpp의 10행
        • 다음 내용을 추가해 준다.

        #ifdef WIN32

            #ifndef NAN

                static const unsigned long __nan[2] = {0xffffffff, 0x7fffffff};

                #define NAN (*(const float *) __nan)

            #endif

        #endif


반응형

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

OpenCV 2.x와 3.x의 차이  (0) 2016.10.20
KCF(Kernelized Correlation Filters)  (0) 2016.05.23
OpenCV속도비교2  (1) 2016.02.29
OpenCV 3.x에서의 OpenCL  (0) 2016.02.25
OpenCV 속도 비교 테스트 - 2.1 vs 3.1(with TBB)  (0) 2016.02.18
반응형

Image Blurring & Sharpening

Imaeg Sharpening은, 흐릿한 이미지를 보다 선명한 이미지로 개선해 주는

영상처리 기술이다.

반대로 Image Blurring은, 마치 안개라도 낀 것처럼 

영상을 흐릿하게 해 주는 기술이다.

구현 방법은 여러가지가 있겠지만,

그중의 하나가, GaussianBlur를 이용하는 방법이다.

OpenCV 함수를 이용하여 다음과 같이 구현할 수 있다.


1. Image Blurring

void imgSharpening(cv::Mat& img, float sigma ) 

{

    cv::Mat tmp;

    cv::GaussianBlur(img, img, cv::Size(0,0), sigma );

※ sigma를 통해, 흐려지는 정도를 조절할 수 있다.


2. Image Sharpening

void imgSharpening(cv::Mat& img, float sigma

{

    cv::Mat tmp;

    cv::GaussianBlur(img, tmp, cv::Size(0,0), sigma );

    cv::addWeighted(img, 1.5, tmp, -0.5, 0, img);

}

※ 1. 이미지가 흐린 정도에 따라, sigma 값을 조절한다.

※ 2. 1.5, -0.5등의 계수 역시 이미지의 흐린 정도에 맞게 조절한다..


위의 두가지 예에서 알 수 있듯이, Image Sharpening은 

선명한 이미지에 안개 등과 같은 흐린 레이어가 덧붙여졌다고 가정하고

덧붙여진 레이어를 제거하는 방법이다.


위 소스들을 테스트해 보면,

이미 흐려진 이미지를 원상태로 깨끗하게 되돌리기에는 한계가 있지만,

계수 조정을 통해 어느 정도 윤곽선이 뚜렷해 지는 것을 확인할 수 있다.


그리고 다음은, Image Deblurring과 관련된 사이트들이다.

참고 사이트


반응형

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

HD 및 HDR의 이해  (0) 2015.12.04
OpenCV 속도 개선 방법  (2) 2015.12.04
2차 개발 계획  (0) 2015.07.22
1차 개선 완료  (0) 2015.07.21
안개보정 개선  (4) 2015.07.21
반응형

Restart

이제 다시 2차 개발로 들어가야 할 시기이다.

1차에서 미비한 점들을 보완해서 개선된 결과물을 만들어 보려 한다.

1차 개발에서 마지막에 발목을 잡은 것은 성능 문제였다.

특히나 떨림보정에서 FPS가 많이 저하되었으며,

안개보정에서도 어느 정도 FPS 저하 현상이 발행하였다.

그래서, 2차 개발의 목표는 다음과 같이 설정하려 한다.

  • 떨림보정, 안개보정에서의 FPS향상
  • 객체 추적 보완

특히나, 이번에는 FPS향상을 위해서 GPU 및 병렬처리 등을 이용할 계획인데,

그러기 위해서는 OpenCV 환경을 다시 설정해야 한다.

따라서, 처음 한주는 새로운 환경 설정을 위해 사용할 것이고,

그 이후로는 각 1차와 마찬가지로 각 기능별 2주씩 잡을 것이다.

반응형

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

OpenCV 속도 개선 방법  (2) 2015.12.04
OpenCV를 이용한 Blurring, Sharpening  (0) 2015.08.21
1차 개선 완료  (0) 2015.07.21
안개보정 개선  (4) 2015.07.21
객체추적 개선  (0) 2015.07.21
반응형

review

계획한 일정에 맞추어, 1차 개선작업을 완료하였다.

물론, '완료'라고는 하지만 '완료'라고 할 수 없는 '완료'이다.

생각보다는 잘 된 측면도 분명히 있다. 

하지만 또한, 품질과 성능 면에서 새로운 과제를 부여받기도 하였다.

그 내용들을 점검해 보면, 다음과 같다.

  1. 떨림보정
    • 생각보다 잘된 측면이 있다. 이전 알고리즘과 비교해 보면, 확실히 보정이 잘 된다.
    • 하지만, 속도 측면에서 개선의 여지가 많다.
    • 또한, 여러가지 다양한 환경에서도 잘 작동하는지는 두고 볼 일이다.
  2. 객체 추적
    • 사실상 개선이라고 보기는 어려울 것 같다.
    • 템플릿 매칭의 한계를 넘어서기 위해, 다른 알고리즘을 검토해 봐야 할 것 같다.
  3. 안개보정
    • 역시 생각보다는 잘 되었다.
    • 문제는, 떨림보정 만큼은 아니지만 속도 문제가 좀 있다.
    • 또한, 보정 후 영상의 품질을 좀더 좋게 만들기 위한 연구가 필요하다.


반응형

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

OpenCV를 이용한 Blurring, Sharpening  (0) 2015.08.21
2차 개발 계획  (0) 2015.07.22
안개보정 개선  (4) 2015.07.21
객체추적 개선  (0) 2015.07.21
떨림보정 개선  (0) 2015.07.06
반응형

안개보정

안개보정은, Retinex 알고리즘을 응용하였다.

Retinex에 대한 설명은, 다음 블로그에 잘 나와 있다.

  • https://flowergom.wordpress.com/2011/11/01/retinex-algorithm/

이번 버전에서는, 속도 향상을 위해 몇가지 변형을 하였다.

테스트를 해 보니, 확실히 이전보다 개선된 결과를 얻을 수 있었다.

 

원본1

보정1

 

원본2

보정2

 

원본3

보정3

 

원본4

보정4

 

원본5

보정5

 

원본6

보정6

 

원본7

보정7

반응형

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

2차 개발 계획  (0) 2015.07.22
1차 개선 완료  (0) 2015.07.21
객체추적 개선  (0) 2015.07.21
떨림보정 개선  (0) 2015.07.06
기존 모듈 분석  (0) 2015.07.03
반응형

Tracking

객체추적은, 개선을 위해 노력했지만 큰 성과를 얻지 못했다.

일단, 이번에 시도했던 내용은 다음과 같다.

  • 기존 모듈의 문제점으로 생각했던 템플릿 변형을 해결하기 위해, 매 프레임마다 템플릿을 갱신하되, 최초 템플릿과의 거리가 일정치 이상 벌어지면 다시 최초 템플릿으로 복귀

결과는 다음과 같다.


샘플1. 기존 버전


샘플1. 신규 버전


샘플2. 기존 버전


샘플2.신규 버전


샘플3.기존 버전


샘플3.신규 버전


* 영상 출저

[VTD] http://cv.snu.ac.kr/research/~vtd/



반응형

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

1차 개선 완료  (0) 2015.07.21
안개보정 개선  (4) 2015.07.21
떨림보정 개선  (0) 2015.07.06
기존 모듈 분석  (0) 2015.07.03
영상처리 개발 계획  (0) 2015.07.03
반응형

시작이

반이다

일정에 따라, 떨림보정 개선 작업부터 시작하였다.

기본적인 흐름은, 기존과 동일하다.

  • 1단계 : 매칭 영역 선정 또는 특징점 추출
  • 2단계 : 이전 프레임과의 연산을 통해, 이동 거리 계산
  • 3단계 : 현재 프레임 역이동을 통한 보정
다만, 각 단계별로 사용하는 알고리즘을 다음과 같이 변경하였다.
  • 1단계 : 템플릿 매칭 영역 설정 => OpticalFlow를 위한 특징점 추출
  • 2단계 : 템플릿 매칭을 통한 dx, dy 계산 => OpticalFlow 결과를 통해 Homography 계산
  • 3단계 : dx,dy 만큼 역이동 => warpPerspective를 통한 위치 보정


개선을 통해 얻은 결과는 다음과 같다.



반응형

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

안개보정 개선  (4) 2015.07.21
객체추적 개선  (0) 2015.07.21
기존 모듈 분석  (0) 2015.07.03
영상처리 개발 계획  (0) 2015.07.03
영상처리 프로젝트를 다시 시작하다  (0) 2015.06.26
반응형

온고지신

일단 개발 환경을 설정하고, 기존 모듈을 다시 컴파일한 다음,

기존 모듈을 링크하여 테스트하기 위한 프로그램을 작성하여

오랜만에 테스트를 시행해 보았다.


그리고 그 내용을 다음과 같이 정리하였다.

  • 안개보정
    • 방식
      • YUV 기반 히스토그램 정규화
    • 문제점
      • 영상에 따라, 잡티가 많이 생기는 경우가 있음
      • 영상에 따라 잘 보이는 경우도 있지만, 안개보정을 해도 여전히 뿌옇게 보이는 경우도 적지 않음
    • 개선 방안
      • Retinex알고리즘 응용
  • 객체 추적
    • 방식
      • Template매칭 사용
      • 기존 프레임의 매칭 영역 주위를 탐색영역으로 설정
      • 연속적인 형태변화에 대응하기 위해, Template는 매 프레임마다 갱신됨
    • 장점
      • 객체의 완만한 변형에 대처 가능
    • 단점
      • 객체의 급작스런 변화에 대처 불가능
      • 매 프레임마다 템플릿이 갱신되므로, 시간이 흐름에 따라 최초 템플릿과 전혀 다른 템플릿으로 변형될 수 있음
    • 개선 방안
      • 템플릿매칭의 한계를 극복할 수 있는 매칭방법 사용
  • 떨림보정
    • 방식
      • 영상에 6군데 정도 영역을 지정해서, 이전 프레임과 템플릿 매칭을 하여 dx, dy를 구하고, 그에 따라 현재 프레임을 이동시킴
    • 문제점
      • 속도가 너무 느림
      • 실제적으로 보정이 잘 안됨
    • 개선 방안
      • OpticalFlow  응용 
반응형

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

안개보정 개선  (4) 2015.07.21
객체추적 개선  (0) 2015.07.21
떨림보정 개선  (0) 2015.07.06
영상처리 개발 계획  (0) 2015.07.03
영상처리 프로젝트를 다시 시작하다  (0) 2015.06.26
반응형

Plan

그동안 손을 놓고 있던 영상처리를 다시 시작하려니,

과연 잘 할 수 있을까 하는 두려움도 생겼지만,

처음부터 잘 할 필요는 없고, 일정을 잡아서 조금씩 개선해 나가면 된다고 해서

일정을 잡아보았다.


기존에 개발한 영상처리 모듈은 다음과 같은 기능을 가지고 있다.

  • 안개보정
  • 떨림보정
  • 객체추적

그래서, 다음과 같은 틀에서 계획을 세우기로 했다.

  1. 개발 환경 정비 - 기존 모듈을 다시 컴파일하고 테스트할 수 있는 환경 마련
  2. 기존 모듈의 성능 시험 및 장단점 분석
  3. 떨림보정 자료 조사 및 구현
  4. 떨림보정 성능 테스트
  5. 객체추적 자료 조사 및 구현
  6. 객체 추적 성능 테스트
  7. 안개보정 자료조사 및 구현
  8. 안개보정 성능 테스트
  9. 각 기능별 개선방안 고안
  10. 3번부터 다시 반복


처음 한달간은 위의 1,2번 작업을 하는데 사용됐고.

이후 3번부터 9번까지의 작업은, 

1차로 기능별 2주씩 일정을 잡아 진행중이다.

반응형

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

안개보정 개선  (4) 2015.07.21
객체추적 개선  (0) 2015.07.21
떨림보정 개선  (0) 2015.07.06
기존 모듈 분석  (0) 2015.07.03
영상처리 프로젝트를 다시 시작하다  (0) 2015.06.26

+ Recent posts