diff options
Diffstat (limited to 'jni_mosaic/feature_mos/src/mosaic/Blend.h')
-rw-r--r-- | jni_mosaic/feature_mos/src/mosaic/Blend.h | 128 |
1 files changed, 0 insertions, 128 deletions
diff --git a/jni_mosaic/feature_mos/src/mosaic/Blend.h b/jni_mosaic/feature_mos/src/mosaic/Blend.h deleted file mode 100644 index 2c7ee5c5f..000000000 --- a/jni_mosaic/feature_mos/src/mosaic/Blend.h +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/////////////////////////////////////////////////// -// Blend.h -// $Id: Blend.h,v 1.23 2011/06/24 04:22:14 mbansal Exp $ - -#ifndef BLEND_H -#define BLEND_H - -#include "MosaicTypes.h" -#include "Pyramid.h" -#include "Delaunay.h" - -#define BLEND_RANGE_DEFAULT 6 -#define BORDER 8 - -// Percent of total mosaicing time spent on each of the following operations -const float TIME_PERCENT_ALIGN = 20.0; -const float TIME_PERCENT_BLEND = 75.0; -const float TIME_PERCENT_FINAL = 5.0; - -// This threshold determines the minimum separation between the image centers -// of the input image frames for them to be accepted for blending in the -// STRIP_TYPE_WIDE mode. -const float STRIP_SEPARATION_THRESHOLD_PXLS = 10; - -// This threshold determines the number of pixels on either side of the strip -// to cross-fade using the images contributing to each seam. -const float STRIP_CROSS_FADE_WIDTH_PXLS = 2; -// This specifies the maximum pyramid level to which cross-fading is applied. -// The original image resolution is Level-0, half of that size is Level-1 and -// so on. BLEND_RANGE_DEFAULT specifies the number of pyramid levels used by -// the blending algorithm. -const int STRIP_CROSS_FADE_MAX_PYR_LEVEL = 2; - -/** - * Class for pyramid blending a mosaic. - */ -class Blend { - -public: - - static const int BLEND_TYPE_NONE = -1; - static const int BLEND_TYPE_FULL = 0; - static const int BLEND_TYPE_PAN = 1; - static const int BLEND_TYPE_CYLPAN = 2; - static const int BLEND_TYPE_HORZ = 3; - - static const int STRIP_TYPE_THIN = 0; - static const int STRIP_TYPE_WIDE = 1; - - static const int BLEND_RET_ERROR = -1; - static const int BLEND_RET_OK = 0; - static const int BLEND_RET_ERROR_MEMORY = 1; - static const int BLEND_RET_CANCELLED = -2; - - Blend(); - ~Blend(); - - int initialize(int blendingType, int stripType, int frame_width, int frame_height); - - int runBlend(MosaicFrame **frames, MosaicFrame **rframes, int frames_size, ImageType &imageMosaicYVU, - int &mosaicWidth, int &mosaicHeight, float &progress, bool &cancelComputation); - -protected: - - PyramidShort *m_pFrameYPyr; - PyramidShort *m_pFrameUPyr; - PyramidShort *m_pFrameVPyr; - - PyramidShort *m_pMosaicYPyr; - PyramidShort *m_pMosaicUPyr; - PyramidShort *m_pMosaicVPyr; - - CDelaunay m_Triangulator; - CSite *m_AllSites; - - BlendParams m_wb; - - // Height and width of individual frames - int width, height; - - // Height and width of mosaic - unsigned short Mwidth, Mheight; - - // Helper functions - void FrameToMosaic(double trs[3][3], double x, double y, double &wx, double &wy); - void MosaicToFrame(double trs[3][3], double x, double y, double &wx, double &wy); - void FrameToMosaicRect(int width, int height, double trs[3][3], BlendRect &brect); - void ClipBlendRect(CSite *csite, BlendRect &brect); - void AlignToMiddleFrame(MosaicFrame **frames, int frames_size); - - int DoMergeAndBlend(MosaicFrame **frames, int nsite, int width, int height, YUVinfo &imgMos, MosaicRect &rect, MosaicRect &cropping_rect, float &progress, bool &cancelComputation); - void ComputeMask(CSite *csite, BlendRect &vcrect, BlendRect &brect, MosaicRect &rect, YUVinfo &imgMos, int site_idx); - void ProcessPyramidForThisFrame(CSite *csite, BlendRect &vcrect, BlendRect &brect, MosaicRect &rect, YUVinfo &imgMos, double trs[3][3], int site_idx); - - int FillFramePyramid(MosaicFrame *mb); - - // TODO: need to add documentation about the parameters - void ComputeBlendParameters(MosaicFrame **frames, int frames_size, int is360); - void SelectRelevantFrames(MosaicFrame **frames, int frames_size, - MosaicFrame **relevant_frames, int &relevant_frames_size); - - int PerformFinalBlending(YUVinfo &imgMos, MosaicRect &cropping_rect); - void CropFinalMosaic(YUVinfo &imgMos, MosaicRect &cropping_rect); - -private: - static const float LIMIT_SIZE_MULTIPLIER = 5.0f * 2.0f; - static const float LIMIT_HEIGHT_MULTIPLIER = 2.5f; - int MosaicSizeCheck(float sizeMultiplier, float heightMultiplier); - void RoundingCroppingSizeToMultipleOf8(MosaicRect& rect); -}; - -#endif |