2013-08-22 2 views
4

저는 OpenCV에서 쿼드 로코터로 촬영 한 저화질, 저해상도 (320x180) 이미지를 스티칭하려고했습니다. 여기에 내가 무엇을 가지고 있습니다 : 촬영OpenCV를 사용한 저품질 공중 스티칭

http://postimg.org/gallery/1rqsycyk/

사진은 거의 디르 당신이 많이 중복 볼 수 있습니다. 각각의 장면 사이에는 번역이 있었고, 장면을 거의 평평하게 유지하는 물체를지면에 놓으려는 시도가있었습니다. 어쨌든 스티칭 과정에서 꽤 많은 사진이 고려되지 않습니다.

여기에 또 다른 예는, (세 개의 이미지를 함께 물렸다된다) :

http://postimg.org/gallery/1wpt3lmo/

내가 서핑 Featuredetector를 사용하여 이미지의 품질이 낮은 그것을 위해 바로 밖으로 작동하지 않는 것으로 생각하고 있습니다 만 나는 그것에 대해 확실하지 않다.

Mat pano; 
    Stitcher stitcher = Stitcher::createDefault(false); 

    stitcher.setWarper(new PlaneWarper()); 
    stitcher.setFeaturesFinder(new detail::SurfFeaturesFinder(1000,3,4,3,4)); 
    stitcher.setRegistrationResol(0.1); 
    stitcher.setSeamEstimationResol(0.1); 
    stitcher.setCompositingResol(1); 
    stitcher.setPanoConfidenceThresh(1); 
    stitcher.setWaveCorrection(true); 
    stitcher.setWaveCorrectKind(detail::WAVE_CORRECT_HORIZ); 
    stitcher.setFeaturesMatcher(new detail::BestOf2NearestMatcher(false,0.3)); 
    stitcher.setBundleAdjuster(new detail::BundleAdjusterRay()); 
    Stitcher::Status status = Stitcher::ERR_NEED_MORE_IMGS; 
    try{ 
     status = stitcher.stitch(picturesTaken, pano); 
    } 
    catch(cv::Exception e){} 

내 다른 추측은 바느질 과정을 수행하는 대신 수동으로 사용 : 여기

내가 비슷한 질문 OpenCV non-rotational image stitching에 그것을 발견하고는 나보다 더 나은 일 이후를 사용하기로 결정, 내가 사용하는 코드입니다 Stitcher 클래스,하지만 많이 바뀌면 잘 모르겠습니다. 그래서 문제는 : 이미지의 품질이 낮을지라도 스티칭 프로세스를 어떻게 더 견고하게 만들 수 있습니까? 또한 정의 ROI는 실적이나 실제 스티칭 기회에 영향을 미칩니 까?

+0

여기 내 대답을 확인하십시오. http://stackoverflow.com/questions/17790954/opencv-non-rotational-image-stitching –

답변

3

결과가 입력 이미지의 품질에 비해 그리 나쁘지 않습니다!

난 (우선 순) 할 것이고, 출력의 품질을 향상시키기 :
  1. 를 해결하고 확인하기 위해 카메라 왜곡 추정이 쉽게 일치

  2. 일부 히스토그램을 수행하거나 스티칭 전에 조명 균일화
  3. 그림 사이의 시간차를 늘리거나 다른 스티치를 사용하십시오. 겹쳐진 영역에서 이미지를 병합 할 때 스티 처가 출력물의 흐림 부분을 만듭니다.
+0

아직 시도하지는 않았지만 귀하의 접근 방식은 저에게 매우 합리적입니다. 사진 간의 시간적 차이를 늘리는 것은 무엇을 의미합니까? – Will

+0

프레임 획득 속도를 줄이거 나 한 프레임을 2로 떨어 뜨리는 것 등을 의미합니다. – sansuiso

2

저는 텍스쳐가없는 영역의 사진을 찍고 그러한 부드러운 영역에서 좋은 독특한 키포인트를 추출하는 것이 어렵다고 생각합니다.

2

이 질문은 매우 유용했습니다. 나는이 주제를 조사하고 내가 당신을 위해 몇 가지 다른 팁이 있습니다

비슷한 이미지를 찾아 소개 : 그것은 정말 큰 값이다

  • 을 당신은 minHessian = 1000으로 SURFFeatureFidner 설정을 (OpenCV의 300을 제안, 나는 100 가끔 사용). 이 때문에 모든 이미지가 일치하는 것은 아닙니다.
  • PanoConfidendceThresh를 "1"로 설정하십시오. 아마도 "0.8"로 설정해야합니다. 더 많은 이미지를 스티칭합니다.

스티칭 된 이미지보기 : 스티 처의 파이프 라인에는 다른 기능이 있습니다.사용해보십시오 :

  • stitcher.setSeamFinder를 (새 세부 :: GraphCutSeamFinder (GraphCutSeamFinderBase :: COST_COLOR))

  • stitcher.setBlender (세부 :: 블렌더 :: createDefault (블렌더 :: MULTI_BAND, 거짓))

  • stitcher.setExposureCompensator (상세 :: ExposureCompensator :: createDefault (ExposureCompensator :: GAIN_BLOCKS))

M aybe 이것은 당신에게 도움이 될 것입니다!