From: <da...@us...> - 2008-05-12 09:11:37
|
Revision: 3065 http://hugin.svn.sourceforge.net/hugin/?rev=3065&view=rev Author: dangelo Date: 2008-05-12 02:11:35 -0700 (Mon, 12 May 2008) Log Message: ----------- Check if sensor size in EXIF tags is actually a sensible value. Works around bugs with cameras that write bad values into the FocalPlane* tags. Should fix [ 1930453 ] Hugin crashes in Exposure panel when exif data not correct Modified Paths: -------------- hugin/trunk/src/hugin_base/panodata/Lens.cpp hugin/trunk/src/hugin_base/panodata/SrcPanoImage.cpp Modified: hugin/trunk/src/hugin_base/panodata/Lens.cpp =================================================================== --- hugin/trunk/src/hugin_base/panodata/Lens.cpp 2008-05-12 09:03:43 UTC (rev 3064) +++ hugin/trunk/src/hugin_base/panodata/Lens.cpp 2008-05-12 09:11:35 UTC (rev 3065) @@ -131,7 +131,7 @@ // calculate the sensor width and height that fit the ratio // the ratio is determined by the size of our image. - m_sensorSize.x = d / sqrt(1 + 1/(r*r)); + m_sensorSize.x = d / sqrt(1.0 + 1.0/(r*r)); m_sensorSize.y = m_sensorSize.x / r; } Modified: hugin/trunk/src/hugin_base/panodata/SrcPanoImage.cpp =================================================================== --- hugin/trunk/src/hugin_base/panodata/SrcPanoImage.cpp 2008-05-12 09:03:43 UTC (rev 3064) +++ hugin/trunk/src/hugin_base/panodata/SrcPanoImage.cpp 2008-05-12 09:11:35 UTC (rev 3065) @@ -489,14 +489,14 @@ float CCDWidth = 0; if (fplaneXresolution != 0) { - CCDWidth = (float)(sensorPixelWidth * resolutionUnits / - fplaneXresolution); +// CCDWidth = (float)(sensorPixelWidth * resolutionUnits / +// fplaneXresolution); + CCDWidth = (float)(sensorPixelWidth / ( fplaneXresolution / resolutionUnits)); } float CCDHeight = 0; if (fplaneYresolution != 0) { - CCDHeight = (float)(sensorPixelHeight * resolutionUnits / - fplaneYresolution) ; + CCDHeight = (float)(sensorPixelHeight / ( fplaneYresolution / resolutionUnits)); } DEBUG_DEBUG("CCDHeight:" << CCDHeight); @@ -532,6 +532,10 @@ cropFactor = sqrt(36.0*36.0+24.0*24.0) / sqrt(sensorSize.x*sensorSize.x + sensorSize.y*sensorSize.y); + // FIXME: HACK guard against invalid image focal plane definition in EXIF metadata with arbitrarly chosen limits for the crop factor ( 1/100 < crop < 100) + if (cropFactor < 0.01 || cropFactor > 100) { + cropFactor = 0; + } } DEBUG_DEBUG("cropFactor: " << cropFactor); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |