27#ifndef _NONA_IMAGEREMAPPER_H
28#define _NONA_IMAGEREMAPPER_H
40 template <
typename ImageType,
typename AlphaType>
74 template <
typename ImageType,
typename AlphaType>
86 typedef std::vector<float>
LUT;
99 unsigned int imgNr, vigra::Rect2D
outputROI,
115 template <
class FFType,
class SrcIter,
class SrcAccessor,
class DestIter,
class DestAccessor>
117 vigra::pair<DestIter, DestAccessor>
destImg,
118 vigra::ImageImportInfo &
ffInfo,
122 typename vigra::NumericTraits<typename SrcAccessor::value_type>::RealPromote a,
123 typename vigra::NumericTraits<typename SrcAccessor::value_type>::RealPromote b,
138#include <vigra/functorexpression.hxx>
146template <
typename ImageType,
typename AlphaType>
147RemappedPanoImage<ImageType, AlphaType>*
149 unsigned int imgNr, vigra::Rect2D
outputROI,
152 typedef typename ImageType::value_type PixelType;
156 typedef typename vigra::BasicImage<float>
FlatImgType;
170 vigra::ImageImportInfo info(img.getFilename().c_str());
172 int width = info.width();
173 int height = info.height();
177 const int r = width % 8;
178 if (r != 0) width += 8 - r;
182 m_remapped->m_ICCProfile = info.getICCProfile();
184 if (info.numExtraBands() > 0) {
188 bool alpha = info.numExtraBands() > 0;
189 std::string type = info.getPixelType();
200 vigra::importImage(info, vigra::destImage(
srcImg));
209 transformImage(vigra::srcImageRange(
srcImg), destImage(
srcImg),
210 vigra::functor::Arg1()*vigra::functor::Param(scale));
216 vigra::ImageImportInfo
ffInfo(img.getFlatfieldFilename().c_str());
219 "flatfield vignetting correction: "
220 "Only single channel flatfield images are supported\n");
222 vigra::importImage(
ffInfo, vigra::destImage(
ffImg));
237template <
class FFType,
class SrcIter,
class SrcAccessor,
class DestIter,
class DestAccessor>
239 vigra::pair<DestIter, DestAccessor>
destImg,
240 vigra::ImageImportInfo &
ffInfo,
244 typename vigra::NumericTraits<typename SrcAccessor::value_type>::RealPromote a,
245 typename vigra::NumericTraits<typename SrcAccessor::value_type>::RealPromote b,
249 vigra::importImage(
ffInfo, vigra::destImage(
ffImg));
Contains functions to transform whole images.
@ VIGCORR_FLATFIELD
flatfield correction
functor to create a remapped image, loads image from disk
void loadImage(const PanoramaOptions &opts, vigra::ImageImportInfo &info, ImageType &srcImg, AlphaType &srcAlpha)
virtual void release(RemappedPanoImage< ImageType, AlphaType > *d)
RemappedPanoImage< ImageType, AlphaType > * m_remapped
virtual RemappedPanoImage< ImageType, AlphaType > * getRemapped(const PanoramaData &pano, const PanoramaOptions &opts, unsigned int imgNr, vigra::Rect2D outputROI, AppBase::ProgressDisplay *progress)
create a remapped pano image.
struct to hold a image state for stitching
functor to create a remapped image
HuginBase::Nona::AdvancedOptions m_advancedOptions
void setAdvancedOptions(const HuginBase::Nona::AdvancedOptions advancedOptions)
virtual ~SingleImageRemapper()
virtual void release(RemappedPanoImage< ImageType, AlphaType > *d)=0
virtual RemappedPanoImage< ImageType, AlphaType > * getRemapped(const PanoramaData &pano, const PanoramaOptions &opts, unsigned int imgNr, vigra::Rect2D outputROI, AppBase::ProgressDisplay *progress)=0
create a remapped pano image.
virtual SrcPanoImage getSrcImage(unsigned imgNr) const =0
get a complete description of a source image
virtual const SrcPanoImage & getImage(std::size_t nr) const =0
get a panorama image, counting starts with 0
unsigned int getWidth() const
unsigned int getHeight() const
get panorama height
All variables of a source image.
class AlphaIterator class AlphaAccessor inline void importImageAlpha(const ImageImportInfo &import_info, ImageIterator image_iterator, ImageAccessor image_accessor, AlphaIterator alpha_iterator, AlphaAccessor alpha_accessor)
vigra::FRGBImage ImageType
std::map< std::string, std::string > AdvancedOptions
void applyFlatfield(vigra::triple< SrcIter, SrcIter, SrcAccessor > srcImg, vigra::pair< DestIter, DestAccessor > destImg, vigra::ImageImportInfo &ffInfo, double gamma, double gammaMaxVal, bool division, typename vigra::NumericTraits< typename SrcAccessor::value_type >::RealPromote a, typename vigra::NumericTraits< typename SrcAccessor::value_type >::RealPromote b, bool dither)
load a flatfield image and apply the correction
void remapImage(SrcImgType &srcImg, const MaskImgType &srcAlpha, const FlatImgType &srcFlat, const SrcPanoImage &src, const PanoramaOptions &dest, vigra::Rect2D outputRect, RemappedPanoImage< DestImgType, MaskImgType > &remapped, AppBase::ProgressDisplay *progress)
remap a single image
mainly consists of wrapper around the pano tools library, to assist in ressource management and to pr...
std::string stripPath(const std::string &filename)
remove the path of a filename (mainly useful for gui display of filenames)
void flatfieldVigCorrection(vigra::triple< ImgIter, ImgIter, ImgAccessor > srcImg, vigra::pair< FFIter, FFAccessor > ffImg, vigra::pair< DestIter, DestAccessor > destImg, double gamma, double gammaMaxVal, bool division, typename vigra::NumericTraits< typename ImgAccessor::value_type >::RealPromote a, typename vigra::NumericTraits< typename ImgAccessor::value_type >::RealPromote b, bool dither)
double getMaxValForPixelType(const std::string &v)
std::vector< deghosting::BImagePtr > threshold(const std::vector< deghosting::FImagePtr > &inputImages, const double threshold, const uint16_t flags)
Threshold function used for creating alpha masks for images.