Android 4.3/4.4上的相机应用程序在"球体模式"下可以将不同方向的照片拼接成一个球形全景,质量非常好。
结果说明:
- http://i-cdn.phonearena.com/images/articles/73441-image/google-nexus-4-photo-sphere.jpg
- http://www.studio8apps.com/wp-content/uploads/2013/05/glass_team_pano_resized.jpg
我要做的是为iPad实现一个功能完全相同的应用程序。
我尝试了两种方法:
OpenCV 2.4.8
OpenCV 2.4.8提供了一个图像拼接管道,乍一看很有前景。然而,它有两个问题:
-
该管道处理无序输入的照片,据我所知,它只使用图像特征匹配来定位照片之间的几何关系,当图像特征提取在空白照片上失败时(如白墙、蓝天),该管道表现不佳。然而,iPad可以提供每张照片的任意空间方向数据(尽管有噪声),但我不知道如何在OpenCV缝合管道中使用这些数据。
-
我找不到像PhotoSphere那样使用这个管道生成180x360度全景的方法。向管道提供所有方向的照片只能产生具有弯曲图像边界的大全景。
PanoTools
我还尝试了PanoTools/Hugin库,尽管该库支持预定义的照片方向,但结果非常糟糕且不稳定。此外,我尝试在Google Play上使用Focal(测试版)应用程序,其球体模式也基于PanoTools/Hugin,他们的结果(在球体模式下)似乎并不比我们的好。
我的问题:
- 有什么库可以像谷歌的PhotoSphere那样做吗?由于我的开发不是为了商业用途,所以任何开源的libs都是可以接受的
- 有什么好的算法(或技术报告、学者论文)可用吗?如果有的话,哪一个最好
- 谷歌是如何实现自己的PhotoSphere的?欢迎提出任何建议
我认为这个答案与其说是一个解决方案,不如说是一种进一步研究的资源。
为了更全面地了解该功能涉及的算法类型,我们可以研究负责它的共享对象(DLL,如果你喜欢Windows语言的话)。通过列出函数名称并在我们最喜欢的搜索引擎中查找,我们得到了几个有趣的点击:
- 前面回答中提到的存储库中的相关源文件。具体参见
Mosaic.h
- 受此代码启发的其他项目,例如Mozilla的PanoramaCameraDesign
鼓励这篇文章的读者仔细阅读下面的函数列表,了解上面提到的各种算法和转换。
以下是我获得此列表所遵循的步骤:
- 我找到了三星[src]的相机应用程序端口
- 在档案馆里,我注意到一个名为
libjni_mosaic.so
的文件(据我猜测)负责马赛克拼接("photosphere") - 我列出了这个文件中的函数(使用Android NDK中的
nm
或llvm_objdump
;更多信息):
U acos
00006f6d T AddFrame
U __aeabi_atexit
U __aeabi_idiv
U __aeabi_uidivmod
U __aeabi_unwind_cpp_pr0
U __aeabi_unwind_cpp_pr1
000326a0 B AffineWarpPoint_BL_LUT_x
00032888 B AffineWarpPoint_BL_LUT_y
000322d0 B AffineWarpPoint_NN_LUT_x
000324b8 B AffineWarpPoint_NN_LUT_y
00008939 T AllocateTextureMemory
U __android_log_print
U asin
00031008 D blendingType
00031138 A __bss_start
00031488 B buffer
00031478 B c
U calloc
U ceil
000073ad T ConvertYVUAiToPlanarYVU
U cos
U __cxa_finalize
U __cxa_pure_virtual
000072b9 T decodeYUV444SP
00032a70 B __dso_handle
00031138 A _edata
00032a80 A _end
U fclose
00007019 T Finalize
00030d88 D __FINI_ARRAY__
U floor
U fopen
U fprintf
U fread
U free
00009589 T FreeTextureMemory
U fscanf
U fwrite
00031f40 B gBuffer
00031df0 B gBufferInput
00032048 B gBufferInputYVU
00031474 B gCancelComputation
00031d88 B gCenterOffsetX
00031d90 B gCenterOffsetY
00031e68 B gCurrentFBOIndex
00031fb8 B g_dAffinetrans
00032198 B g_dAffinetransGL
00031010 D g_dAffinetransIdentGL
00031948 B g_dAffinetransPan
00031ca8 B g_dAffinetransPanGL
000310e0 D g_dAffinetransRotation90GL
00031068 D g_dIdent3x3
00032250 B g_dTranslationToFBOCenter
00031900 B g_dTranslationToFBOCenterGL
00006e89 T GenerateQuarterResImagePlanar
U gettimeofday
00031120 D g_iIndices
00031128 D g_iIndices2
00031130 D g_iIndices3
00031050 D gIsLandscapeOrientation
00031d30 B gK
00032078 B gKinv
00031f70 B gKm
00031d98 B gKminv
U glActiveTexture
00031ce8 B gLastH1t
00031d80 B gLastTx
U glAttachShader
U glBindFramebuffer
U glBindTexture
U glCheckFramebufferStatus
U glClear
U glClearColor
U glCompileShader
U glCreateProgram
U glCreateShader
U glDeleteProgram
U glDeleteShader
U glDisable
U glDrawElements
U glEnableVertexAttribArray
U glFramebufferTexture2D
U glGenFramebuffers
U glGenTextures
U glGetAttribLocation
U glGetError
U glGetProgramInfoLog
U glGetProgramiv
U glGetShaderInfoLog
U glGetShaderiv
U glGetUniformLocation
U glLinkProgram
U glPixelStorei
U glReadPixels
U glShaderSource
U glTexImage2D
U glTexParameterf
U glTexParameteri
U glUniform1i
U glUniformMatrix4fv
U glUseProgram
U glVertexAttribPointer
U glViewport
00031aa0 B gPanOffset
0003100c D gPanViewfinder
000319cc B gPreview
00032038 B gPreviewFBOHeight
000319c8 B gPreviewFBOWidth
00032040 B gPreviewImage
00031de8 B gPreviewImageHeight
000318fc B gPreviewImage_semaphore
00031d78 B gPreviewImageWidth
00031890 B gProgress
00031090 D gRotation90
00031de0 B gSurfaceTextureID
00031aa8 B gSurfTexRenderer
00031e20 B gThisH1t
00031940 B gThisTx
000318b8 B gTRS
00031058 D gUILayoutScalingX
00031060 D gUILayoutScalingY
00031e6c B gWarper1
000320c0 B gWarper2
000310d8 D gWarpImage
000321d8 B gYVURenderer
000318e8 B height
000318f8 B high_res
00006d39 T Init
00030ca4 D __INIT_ARRAY__
00007201 T Java_com_android_camera_Mosaic_allocateMosaicMemory
00007809 T Java_com_android_camera_Mosaic_createMosaic
0000728d T Java_com_android_camera_Mosaic_freeMosaicMemory
000079b9 T Java_com_android_camera_Mosaic_getFinalMosaic
00007b1d T Java_com_android_camera_Mosaic_getFinalMosaicNV21
000095e1 T Java_com_android_camera_MosaicRenderer_init
00009bed T Java_com_android_camera_MosaicRenderer_preprocess
000097b9 T Java_com_android_camera_MosaicRenderer_reset
00009f81 T Java_com_android_camera_MosaicRenderer_setWarping
00009e1d T Java_com_android_camera_MosaicRenderer_step
00009c4d T Java_com_android_camera_MosaicRenderer_transferGPUtoCPU
0000a09d T Java_com_android_camera_MosaicRenderer_updateMatrix
000077b5 T Java_com_android_camera_Mosaic_reportProgress
00007779 T Java_com_android_camera_Mosaic_reset
00007761 T Java_com_android_camera_Mosaic_setBlendingType
000075ad T Java_com_android_camera_Mosaic_setSourceImage
000073dd T Java_com_android_camera_Mosaic_setSourceImageFromGPU
0000776d T Java_com_android_camera_Mosaic_setStripType
000095b9 T JNI_OnLoad
000095d5 T JNI_OnUnload
U log
U malloc
U memcpy
U memmove
U memset
00031480 B mosaic
00031470 B mosaicHeight
00031898 B mosaicWidth
0002cbdc T __on_dlclose
U pow
U printf
U putchar
U puts
00031888 B quarter_res
000318b0 B resultBGR
000318a8 B resultYVU
U sem_destroy
U sem_init
U sem_post
U sem_wait
U __sF
U sin
U sqrt
00031140 B stripType
000318a0 B tHeight
00031000 D thresh_still
00031150 B tImage
000318f0 B tWidth
00008129 T UpdateWarpTransformation
0002c545 T vp_cascade_motion
0002c7c1 T vp_copy_motion
0002c4f5 T vp_invert_motion
0002c7d1 T vp_motion_cornerdiff
0002caf1 T vp_zoom_motion2d
00031144 B width
000070e1 T YUV420toYVU24
00007169 T YUV420toYVU24_NEW
00028b09 T db_SolveCubic(double*, int*, double, double, double, double)
00023ef1 T db_CopyImage_u(unsigned char**, unsigned char const* const*, int, int, int)
00023ed9 T db_FreeImage_f(float**, int)
00023ed9 T db_FreeImage_u(unsigned char**, int)
0000a385 T normProjMat33d(double (*) [3])
00023d99 T db_AllocImage_f(int, int, int)
00023e41 T db_AllocImage_u(int, int, int)
00028e61 T db_SolveQuartic(double*, int*, double, double, double, double, double)
00019a79 T db_FillBuckets_f(float*, float const* const*, db_Bucket_f**, int, int, int, int, int, double const*, double const*, int)
00019bb5 T db_FillBuckets_u(short*, unsigned char const* const*, db_Bucket_u**, int, int, int, int, int, double const*, double const*, int, int, int)
000198b9 T db_FreeBuckets_f(db_Bucket_f**, int, int)
00019915 T db_FreeBuckets_u(db_Bucket_u**, int, int)
00007f1d T ClearPreviewImage(int)
00024491 T db_AlignPointer_f(float*, unsigned long)
00024491 T db_AlignPointer_s(short*, unsigned long)
000195b1 T db_AllocBuckets_f(int, int, int)
00019629 T db_AllocBuckets_u(int, int, int)
000241a1 T db_Approx3DCalMat(double*, double*, int, int, double, int)
0001b729 W db_EigenVector4x4(double*, double, double const*)
00019a49 T db_EmptyBuckets_f(db_Bucket_f**, int, int)
00019a49 T db_EmptyBuckets_u(db_Bucket_u**, int, int)
0001aa39 T db_MatchBuckets_f(db_Bucket_f**, db_Bucket_f**, int, int, unsigned long, unsigned long)
0001ac1d T db_MatchBuckets_u(db_Bucket_u**, db_Bucket_u**, int, int, unsigned long, unsigned long, int, bool, int)
00023f1d T db_WarpImageLut_u(unsigned char const* const*, unsigned char**, int, int, float const* const*, float const* const*, int)
00007ec9 T bindSurfaceTexture(unsigned int)
00007e45 T checkGLErrorDetail(char const*, int, char const*)
00007ff9 T continuePanningFBO(double)
00024a79 T db_CholeskyBacksub(double*, double const* const*, double const*, int, double const*)
00024341 T db_LeanQuickSelect(double const*, long, long, double*)
0001af7d T db_CollectMatches_f(db_Bucket_f**, int, int, unsigned long, int*, int*, int*)
0001af7d T db_CollectMatches_u(db_Bucket_u**, int, int, unsigned long, int*, int*, int*)
00013bb1 T db_HarrisStrength_f(float**, float const* const*, int, int, float*, int)
00014051 T db_HarrisStrength_u(float**, unsigned char const* const*, int, int, int*)
00024f7d T db_Orthogonalize6x7(double*, int)
000261e5 T db_Orthogonalize8x9(double*, int)
000245b1 T db_CholeskyDecomp6x6(double*, double*)
00024141 T db_PrintDoubleMatrix(double*, long, long)
00024105 T db_PrintDoubleVector(double*, long)
00018521 T AffineWarpPointOffset(float&, float&, double*, int, int)
00024c91 T db_CholeskyBacksub3x3(double*, double const*, double const*, double const*)
00024d55 T db_CholeskyBacksub6x6(double*, double const*, double const*, double const*)
000244a9 W db_OrthogonalizePair9(double*, double const*, double)
00021d81 T db_RobImageHomography(double*, double*, double*, int, double*, double*, double*, int*, int, db_stat_struct*, int, int, double, int, int, int, double*, double*, double*, double*, int*)
00016071 W db_ScalarProduct128_s(short const*, short const*)
000290d9 T db_SolveQuarticForced(double*, int*, double, double, double, double, double)
00007d39 T checkFramebufferStatus(char const*)
00013b99 T db_FreeStrengthImage_f(float*, float**, int)
00007f81 T ConvertAffine3x3toGL4x4(double*, double*)
00013a51 T db_AllocStrengthImage_f(float**, int, int)
000242ed T db_LeanPartitionOnPivot(double, double*, double const*, long, long, long*, long*)
00014c71 T db_MaxImage_Aligned16_f(float**, int, int, int, int)
000096f5 T calculateUILayoutScaling(int, int, bool)
0001e9b9 T db_RobCamRotation_Polish(double*, int, double*, double*, double, int, double)
0001d509 T db_StitchSimilarity2DRaw(double*, double*, double*, double**, double**, int, int, int, int, int)
0001bf21 T db_StitchSimilarity3DRaw(double*, double*, double*, double**, double**, int, int, int, int, int)
0001a259 T db_FillBucketsPrewarped_f(float*, float const* const*, db_Bucket_f**, int, int, int, int, int, double const*, double const*, int, double const*)
0001a405 T db_FillBucketsPrewarped_u(short*, unsigned char const* const*, db_Bucket_u**, int, int, int, int, int, double const*, double const*, int, double const*)
00023c69 T db_SetupImageReferences_f(float*, int, int)
00023d09 T db_SetupImageReferences_u(unsigned char*, int, int)
0001cac1 T db_StitchAffine2D_3Points(double*, double*, double*, double*, double*, double*, double*)
00015139 T db_ExtractCornersSaturated(float**, int, int, int, int, int, int, unsigned long, float, double*, double*, double*, int*)
0001db19 W db_RobImageHomography_Cost(double*, int, double*, double*, double)
00027ea1 T db_NullVectorOrthonormal6x7(double*, double const*)
00028369 T db_NullVectorOrthonormal8x9(double*, double const*)
0001c2d9 T db_StitchProjective2D_4Points(double*, double*, double*, double*, double*, double*, double*, double*, double*)
00016b3d W db_ScalarProduct128Aligned16_f(float const*, float const*)
0001a5c9 T db_FillBucketsPrewarpedAffine_u(short*, unsigned char const* const*, db_Bucket_u**, int, int, int, int, int, double const*, double const*, int, double const*, double const*, int const*, int)
0001e061 W db_RobImageHomography_Jacobians(double*, double*, double*, int, double*, double*, double)
0001bbb9 W db_RotationFromMOuterProductSum(double*, double*, double*)
0001f169 T db_RobCamRotation_Polish_Generic(double*, int, int, double*, double*, double, int, double)
00024971 T db_CholeskyDecompSeparateDiagonal(double**, double*, int)
00024b5d T db_CholeskyDecomp3x3SeparateDiagonal(double*, double*)
00014e9d T db_MaxSuppressFilter_5x5_Aligned16_f(float**, float**, int, int, int, int, float*)
00018905 W db_SignedSquareNormCorr11x11_PreAlign_f(float*, float const* const*, int, int, float*, float*)
00017831 W db_SignedSquareNormCorr11x11_PreAlign_u(short*, unsigned char const* const*, int, int, float*, float*)
00018699 T db_SignedSquareNormCorr5x5Aligned_Post_s(short const*, short const*, float, float)
00018651 T db_SignedSquareNormCorr11x11Aligned_Post_s(short const*, short const*, float, float)
00018565 T db_SignedSquareNormCorr21x21Aligned_Post_s(short const*, short const*, float, float)
0001cf89 T db_StitchRotationCommonFocalLength_3Points(double*, double*, double*, double*, double*, double*, double*, double*, int)
0000a409 T det33d(double const (*) [3])
0000a459 T inv33d(double const (*) [3], double (*) [3])
000242d1 T db_Zero(double*, long)
0000a249 T mult33d(double (*) [3], double (*) [3], double (*) [3])
U operator delete[](void*)
U operator delete(void*)
000105cd T ImageUtils::allocateImage(int, int, int, short)
00010451 T ImageUtils::readBinaryPPM(char const*, int&, int&)
00010525 T ImageUtils::writeBinaryPPM(unsigned char*, char const*, int, int, int)
00010151 T ImageUtils::imageTypeToRowPointers(unsigned char*, int, int)
0000ff09 T ImageUtils::rgb2yvu(unsigned char*, unsigned char*, int, int)
00010319 T ImageUtils::yvu2bgr(unsigned char*, unsigned char*, int, int)
000101e1 T ImageUtils::yvu2rgb(unsigned char*, unsigned char*, int, int)
00010019 T ImageUtils::rgb2gray(unsigned char*, int, int)
000100c1 T ImageUtils::rgb2gray(unsigned char*, unsigned char*, int, int)
0000fe09 T ImageUtils::rgba2yvu(unsigned char*, unsigned char*, int, int)
000105e1 T ImageUtils::freeImage(unsigned char*)
000123e1 T FrameBuffer::CreateBuffers()
0001226d T FrameBuffer::InitializeGLContext()
000122ad T FrameBuffer::Init(int, int, unsigned int)
00012255 T FrameBuffer::Reset()
00012231 T FrameBuffer::FrameBuffer()
00012231 T FrameBuffer::FrameBuffer()
00012219 T FrameBuffer::~FrameBuffer()
00012209 T FrameBuffer::~FrameBuffer()
00012209 T FrameBuffer::~FrameBuffer()
00012129 T YVURenderer::DrawTexture()
00012035 T YVURenderer::InitializeGLProgram()
00012111 T YVURenderer::YVURenderer()
00012111 T YVURenderer::YVURenderer()
000120f1 T YVURenderer::~YVURenderer()
000120d9 T YVURenderer::~YVURenderer()
000120d9 T YVURenderer::~YVURenderer()
0001b449 T db_Matcher_f::Init(int, int, double, int)
0001b40d T db_Matcher_f::Clean()
0001b5a1 T db_Matcher_f::Match(float const* const*, float const* const*, double const*, double const*, int, double const*, double const*, int, int*, int*, int*, double const*)
0001b3c1 T db_Matcher_f::db_Matcher_f()
0001b3c1 T db_Matcher_f::db_Matcher_f()
0001b3cd T db_Matcher_f::~db_Matcher_f()
0001b3cd T db_Matcher_f::~db_Matcher_f()
0001b71d T db_Matcher_u::IsAllocated()
000196a1 T db_Matcher_u::Init(int, int, double, int, double, bool, int)
00019971 T db_Matcher_u::Clean()
0001b019 T db_Matcher_u::Match(unsigned char const* const*, unsigned char const* const*, double const*, double const*, int, double const*, double const*, int, int*, int*, int*, double const*, int)
0001b6e5 T db_Matcher_u::operator=(db_Matcher_u const&)
0001b6a1 T db_Matcher_u::db_Matcher_u(db_Matcher_u const&)
0001b675 T db_Matcher_u::db_Matcher_u()
0001b6a1 T db_Matcher_u::db_Matcher_u(db_Matcher_u const&)
0001b675 T db_Matcher_u::db_Matcher_u()
00019a01 T db_Matcher_u::~db_Matcher_u()
000199b1 T db_Matcher_u::~db_Matcher_u()
000199b1 T db_Matcher_u::~db_Matcher_u()
00010c51 T PyramidShort::calcStorage(unsigned short, unsigned short, unsigned short, int, int*)
0001113d T PyramidShort::BorderExpand(PyramidShort*, int, int)
00011529 T PyramidShort::BorderReduce(PyramidShort*, int)
00010c89 T PyramidShort::BorderSpread(PyramidShort*, int, int, int, int)
00010be5 T PyramidShort::allocateImage(unsigned short, unsigned short, unsigned short)
00010d89 T PyramidShort::BorderExpandOdd(PyramidShort*, PyramidShort*, PyramidShort*, int)
000111cd T PyramidShort::BorderReduceOdd(PyramidShort*, PyramidShort*, PyramidShort*)
00010b25 T PyramidShort::allocatePyramidPacked(unsigned short, unsigned short, unsigned short, unsigned short)
00010c49 T PyramidShort::freeImage(PyramidShort*)
00011b71 T WarpRenderer::DrawTexture(float*)
00011af1 T WarpRenderer::SetScalingMatrix(float, float)
00011a39 T WarpRenderer::SetViewportMatrix(int, int, int, int)
0001190d T WarpRenderer::InitializeGLProgram()
00011a21 T WarpRenderer::WarpRenderer()
00011a21 T WarpRenderer::WarpRenderer()
00011a01 T WarpRenderer::~WarpRenderer()
000119e9 T WarpRenderer::~WarpRenderer()
000119e9 T WarpRenderer::~WarpRenderer()
00015781 T db_CornerDetector_f::Init(int, int, int, int, int, double, double)
0001574d T db_CornerDetector_f::Clean()
000158b9 T db_CornerDetector_f::Start(int, int, int, int, unsigned long, double, double, int)
00015709 T db_CornerDetector_f::db_CornerDetector_f()
00015709 T db_CornerDetector_f::db_CornerDetector_f()
00015715 T db_CornerDetector_f::~db_CornerDetector_f()
00015715 T db_CornerDetector_f::~db_CornerDetector_f()
00013a0d T db_CornerDetector_u::ExtractCorners(float**, double*, double*, int*)
00015f31 T db_CornerDetector_u::Init(int, int, int, int, int, double, double)
00012645 T db_CornerDetector_u::Clean()
00015ea9 T db_CornerDetector_u::Start(int, int, int, int, unsigned long, double, double)
00015ff1 T db_CornerDetector_u::operator=(db_CornerDetector_u const&)
0001602d T db_CornerDetector_u::db_CornerDetector_u(db_CornerDetector_u const&)
00015e91 T db_CornerDetector_u::db_CornerDetector_u()
0001602d T db_CornerDetector_u::db_CornerDetector_u(db_CornerDetector_u const&)
00015e91 T db_CornerDetector_u::db_CornerDetector_u()
0001267d T db_CornerDetector_u::~db_CornerDetector_u()
000126c9 T db_CornerDetector_u::~db_CornerDetector_u()
000126c9 T db_CornerDetector_u::~db_CornerDetector_u()
00011f39 T SurfaceTextureRenderer::DrawTexture(float*)
00011f31 T SurfaceTextureRenderer::SetSTMatrix(float*)
00011eb1 T SurfaceTextureRenderer::SetScalingMatrix(float, float)
00011df9 T SurfaceTextureRenderer::SetViewportMatrix(int, int, int, int)
00011c9d T SurfaceTextureRenderer::InitializeGLProgram()
00011dc1 T SurfaceTextureRenderer::SurfaceTextureRenderer()
00011dc1 T SurfaceTextureRenderer::SurfaceTextureRenderer()
00011da1 T SurfaceTextureRenderer::~SurfaceTextureRenderer()
00011d89 T SurfaceTextureRenderer::~SurfaceTextureRenderer()
00011d89 T SurfaceTextureRenderer::~SurfaceTextureRenderer()
0002b4f1 T db_StabilizationSmoother::smoothMotion(VP_MOTION*, VP_MOTION*)
0002b6f9 T db_StabilizationSmoother::smoothMotion(VP_MOTION*, VP_MOTION*, double)
0002bcf1 T db_StabilizationSmoother::smoothMotion1(VP_MOTION*, VP_MOTION*, VP_MOTION*, VP_MOTION*, double)
0002be8d T db_StabilizationSmoother::is_point_in_rect(double, double, double, double, double, double)
0002b8b1 T db_StabilizationSmoother::smoothMotionAdaptive(int, int, VP_MOTION*, VP_MOTION*)
0002aa45 T db_StabilizationSmoother::Init()
0002b4e5 T db_StabilizationSmoother::db_StabilizationSmoother()
0002b4e5 T db_StabilizationSmoother::db_StabilizationSmoother()
0000ecb9 T db_StabilizationSmoother::~db_StabilizationSmoother()
0000ecb9 T db_StabilizationSmoother::~db_StabilizationSmoother()
0002a1d9 T db_FrameToReferenceRegistration::SmoothMotion()
00029c89 T db_FrameToReferenceRegistration::ComputeInliers(double*)
00029f09 T db_FrameToReferenceRegistration::SelectOutliers()
0002a479 T db_FrameToReferenceRegistration::UpdateReference(unsigned char const* const*, bool, bool)
00029efd T db_FrameToReferenceRegistration::ComputeCostArray()
0002991d T db_FrameToReferenceRegistration::Get_H_dref_to_ins(double*)
000298d1 T db_FrameToReferenceRegistration::Get_H_dref_to_ref(double*)
00029a89 T db_FrameToReferenceRegistration::Set_H_dref_to_ins(double*)
00029c51 T db_FrameToReferenceRegistration::NeedReferenceUpdate()
0002a141 T db_FrameToReferenceRegistration::SetOutlierThreshold()
0002a071 T db_FrameToReferenceRegistration::ComputeCostHistogram()
00029c19 T db_FrameToReferenceRegistration::ResetDisplayReference()
00029f9d T db_FrameToReferenceRegistration::EstimateSecondaryModel(double*)
0002a379 T db_FrameToReferenceRegistration::GenerateQuarterResImage(unsigned char const* const*)
00029669 T db_FrameToReferenceRegistration::Init(int, int, int, int, bool, bool, double, unsigned int, bool, double, int, int, int, double, bool, int, int)
00029539 T db_FrameToReferenceRegistration::Clean()
00029ce5 T db_FrameToReferenceRegistration::Polish(int*, int&)
0002a62d T db_FrameToReferenceRegistration::AddFrame(unsigned char const* const*, double*, bool, bool)
00029425 T db_FrameToReferenceRegistration::db_FrameToReferenceRegistration()
00029425 T db_FrameToReferenceRegistration::db_FrameToReferenceRegistration()
00029641 T db_FrameToReferenceRegistration::~db_FrameToReferenceRegistration()
00029641 T db_FrameToReferenceRegistration::~db_FrameToReferenceRegistration()
0000ab05 T Align::getLastTRS(double (*) [3])
0000a619 T Align::initialize(int, int, bool, float)
0000aae1 T Align::addFrameRGB(unsigned char*)
0000a611 T Align::getRegProfileString()
0000a7b1 T Align::addFrame(unsigned char*)
0000a545 T Align::Align()
0000a545 T Align::Align()
0000a5f9 T Align::~Align()
0000a5f9 T Align::~Align()
0000ac6d T Blend::initialize(int, int, int, int)
0000b301 T Blend::ComputeMask(CSite*, BlendRect&, BlendRect&, MosaicRect&, YUVinfo&, int)
0000c429 T Blend::ClipBlendRect(CSite*, BlendRect&)
0000c2a1 T Blend::FrameToMosaic(double (*) [3], double, double, double&, double&)
0000b54d T Blend::MosaicToFrame(double (*) [3], double, double, double&, double&)
0000af4d T Blend::CropFinalMosaic(YUVinfo&, MosaicRect&)
0000c5d9 T Blend::DoMergeAndBlend(MosaicFrame**, int, int, int, YUVinfo&, MosaicRect&, MosaicRect&, float&, bool&)
0000ad71 T Blend::MosaicSizeCheck(float, float)
0000ae05 T Blend::FillFramePyramid(MosaicFrame*)
0000ca39 T Blend::FrameToMosaicRect(int, int, double (*) [3], BlendRect&)
0000ad25 T Blend::AlignToMiddleFrame(MosaicFrame**, int)
0000affd T Blend::PerformFinalBlending(YUVinfo&, MosaicRect&)
0000cc81 T Blend::SelectRelevantFrames(MosaicFrame**, int, MosaicFrame**, int&)
0000e181 T Blend::ComputeBlendParameters(MosaicFrame**, int, int)
0000b6a9 T Blend::ProcessPyramidForThisFrame(CSite*, BlendRect&, BlendRect&, MosaicRect&, YUVinfo&, double (*) [3], int)
0000b2dd T Blend::RoundingCroppingSizeToMultipleOf8(MosaicRect&)
0000ce01 T Blend::runBlend(MosaicFrame**, MosaicFrame**, int, unsigned char*&, int&, int&, float&, bool&)
0000ac2d T Blend::Blend()
0000ac2d T Blend::Blend()
0000ac45 T Blend::~Blend()
0000ac45 T Blend::~Blend()
000107a1 T Mosaic::initialize(int, int, int, int, int, bool, float)
0001098d T Mosaic::addFrameRGB(unsigned char*)
00010ac1 T Mosaic::createMosaic(float&, bool&)
000109f1 T Mosaic::balanceRotations()
000108ed T Mosaic::addFrame(unsigned char*)
000109d9 T Mosaic::getMosaic(int&, int&)
000106e9 T Mosaic::Mosaic()
000106e9 T Mosaic::Mosaic()
00010721 T Mosaic::~Mosaic()
00010721 T Mosaic::~Mosaic()
000105e5 T YUVinfo::allocateImage(unsigned short, unsigned short)
00010695 T YUVinfo::mapYUVInfoToImage(YUVinfo*, unsigned char*)
000115fd T Renderer::loadShader(unsigned int, char const*)
00011691 T Renderer::createProgram(char const*, char const*)
00011791 T Renderer::SetupGraphics(int, int)
000117fd T Renderer::SetupGraphics(FrameBuffer*)
000118d5 T Renderer::GetTextureName()
000118b1 T Renderer::InitializeGLContext()
000118d9 T Renderer::SetInputTextureName(unsigned int)
000118dd T Renderer::SetInputTextureType(unsigned int)
000118e1 T Renderer::SetInputTextureDimensions(int, int)
00011879 T Renderer::Clear(float, float, float, float)
000115b9 T Renderer::Renderer()
000115b9 T Renderer::Renderer()
000115a1 T Renderer::~Renderer()
00011591 T Renderer::~Renderer()
00011591 T Renderer::~Renderer()
0000ee45 T CDelaunay::deleteEdge(short)
0000eef9 T CDelaunay::freeMemory()
0000eec1 T CDelaunay::allocMemory(int)
0000ed81 T CDelaunay::connectLeft(short, short)
0000fd59 T CDelaunay::triangulate(SEdgeVector**, int, int, int)
0000ede5 T CDelaunay::connectRight(short, short)
0000fc41 T CDelaunay::constructList(short, int, int)
0000fd91 T CDelaunay::linkNeighbors(SEdgeVector*, int, int)
0000ef0d T CDelaunay::deleteAllEdges()
0000ef49 T CDelaunay::consolidateEdges()
0000faf1 T CDelaunay::buildTriangulation(int)
0000f4d9 T CDelaunay::ccw(short, short, short)
0000f8cd T CDelaunay::build(int, int, short*, short*, int)
0000e771 T CDelaunay::cmpev(int, int)
0000e7e9 T CDelaunay::copyev(int, int)
0000e7fd T CDelaunay::copysp(int, int)
0000ed2d T CDelaunay::splice(short, short)
0000e7c1 T CDelaunay::swapev(int, int)
0000e781 T CDelaunay::swapsp(int, int)
0000e8b1 T CDelaunay::xcmpsp(int, int)
0000e825 T CDelaunay::ycmpsp(int, int)
0000f529 T CDelaunay::doMerge(short*, short, short, short*)
0000f0fd T CDelaunay::rcssort(int, int, int, int (CDelaunay::*)(int, int), void (CDelaunay::*)(int, int), void (CDelaunay::*)(int, int))
0000f035 T CDelaunay::spsortx(short*, int, int)
0000f099 T CDelaunay::spsorty(short*, int, int)
0000ef39 T CDelaunay::freeEdge(short)
0000f439 T CDelaunay::incircle(short, short, short, short)
0000ecbd T CDelaunay::makeEdge(short, short)
0000ef19 T CDelaunay::allocEdge()
0000ecb9 T CDelaunay::CDelaunay()
0000ecb9 T CDelaunay::CDelaunay()
0000ecb9 T CDelaunay::~CDelaunay()
0000ecb9 T CDelaunay::~CDelaunay()
U operator new[](unsigned int)
000118d5 T FrameBuffer::GetTextureName() const
00012411 T FrameBuffer::GetFrameBufferName() const
00012419 T FrameBuffer::GetWidth() const
00012415 T FrameBuffer::GetFormat() const
0001241d T FrameBuffer::GetHeight() const
0001201d T YVURenderer::VertexShaderSource() const
00012029 T YVURenderer::FragmentShaderSource() const
000118f5 T WarpRenderer::VertexShaderSource() const
00011901 T WarpRenderer::FragmentShaderSource() const
00015971 T db_CornerDetector_f::DetectCorners(float const* const*, double*, double*, int*) const
00012cc5 T db_CornerDetector_u::DetectCorners(unsigned char const* const*, double*, double*, int*, unsigned char const* const*, unsigned char) const
00011c85 T SurfaceTextureRenderer::VertexShaderSource() const
00011c91 T SurfaceTextureRenderer::FragmentShaderSource() const
U operator new(unsigned int)
00030d30 D vtable for FrameBuffer
00030d10 D vtable for YVURenderer
00030d68 D vtable for db_Matcher_u
00030cd0 D vtable for WarpRenderer
00030d40 D vtable for db_CornerDetector_u
00030cf0 D vtable for SurfaceTextureRenderer
00030cb0 D vtable for Renderer