From: <hug...@li...> - 2010-10-23 09:48:26
|
branch: details: http://hugin.hg.sourceforge.net/hgweb/hugin/hugin/hgrepo/h/hu/hugin/hugin/rev/1252d698dcc3 changeset: 4517:1252d698dcc3 user: tmodes date: Sat Oct 23 11:48:00 2010 +0200 description: Better remapping for portrait images in cpfind diffstat: src/hugin_cpfind/cpfind/PanoDetector.cpp | 18 +++++++++++++++++- 1 files changed, 17 insertions(+), 1 deletions(-) diffs (35 lines): diff -r e185a4f4a58e -r 1252d698dcc3 src/hugin_cpfind/cpfind/PanoDetector.cpp --- a/src/hugin_cpfind/cpfind/PanoDetector.cpp Sat Oct 23 11:19:02 2010 +0200 +++ b/src/hugin_cpfind/cpfind/PanoDetector.cpp Sat Oct 23 11:48:00 2010 +0200 @@ -544,6 +544,12 @@ // Add images found in the project file to _filesData unsigned int nImg = _panoramaInfo->getNrOfImages(); unsigned int imgWithKeyfile=0; + PanoramaOptions fovOpts; + fovOpts.setProjection(PanoramaOptions::EQUIRECTANGULAR); + fovOpts.setHFOV(360); + fovOpts.setVFOV(180); + fovOpts.setWidth(360); + fovOpts.setHeight(180); for (unsigned int imgNr = 0; imgNr < nImg; ++imgNr) { // insert the image in the map @@ -594,7 +600,17 @@ if(aImgData._needsremap) { aImgData._projOpts = _panoramaInfoCopy.getOptions(); - aImgData._projOpts.setHFOV(img.getHFOV()); + //determine size of image in angles, needed for portrait images + vigra::Rect2D roi=estimateOutputROI(_panoramaInfoCopy,fovOpts,imgNr); + if(img.getWidth()>img.getHeight()) + { + + aImgData._projOpts.setHFOV(2*(std::max(180-roi.left(),roi.right()-180))); + } + else + { + aImgData._projOpts.setHFOV(2*(std::max(90-roi.top(),roi.bottom()-90))); + }; aImgData._projOpts.setWidth(_filesData[imgNr]._detectWidth); aImgData._projOpts.setHeight(_filesData[imgNr]._detectHeight); aImgData._projOpts.setProjection(PanoramaOptions::STEREOGRAPHIC); |