/* * Copyright (C) 2008 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. */ #ifndef bim_FUNCTIONS_EM_H #define bim_FUNCTIONS_EM_H /** * This files contains gerenral purpose functions. */ /* ---- includes ----------------------------------------------------------- */ #include "b_BasicEm/UInt8Arr.h" #include "b_TensorEm/Functions.h" #include "b_TensorEm/Flt16Alt2D.h" /* ---- related objects --------------------------------------------------- */ /* ---- typedefs ----------------------------------------------------------- */ /** pyramidal image type */ enum bim_PyramidalImageType { bim_UINT8_PYRAMIDAL_IMG, /* byte representation of pyramical image */ bim_UINT16_PYRAMIDAL_IMG /* 16-bit representation of pyramical image */ }; /* ---- constants ---------------------------------------------------------- */ /* ---- external functions ------------------------------------------------- */ /** Warps an image with intermediate pyramidal downscaling if possible in order to minimize aliasing * The actual warping happens using pixel interpolation * *bufPtrA is an intermediate byte array that holds downscaled data (only needed when pyramidal downscaling happens; can be NULL otherwise) * scaleThresholdA (16.16): * specifies the minimum scale ratio (inImage/outImage) required to initiate prior filtering * A value range of 2.0...4.0 is recommended (<= 0.0: disabled) * * offsPtrA specifies the pixel position (0,0) in the input image (format 16.0) */ void bim_filterWarpInterpolation( struct bbs_Context* cpA, uint8* dstImagePtrA, const uint8* srcImagePtrA, uint32 srcImageWidthA, uint32 srcImageHeightA, const struct bts_Int16Vec2D* offsPtrA, const struct bts_Flt16Alt2D* altPtrA, uint32 dstWidthA, uint32 dstHeightA, struct bbs_UInt8Arr* bufPtrA, uint32 scaleThresholdA ); /** Warps an image with intermediate pyramidal downscaling if possible in order to minimize aliasing * The actual warping happens using pixel replication (fast but prone to artefacts) * *bufPtrA is an intermediate byte array that holds downscaled data (only needed when pyramidal downscaling happens; can be NULL otherwise) * scaleThresholdA (16.16): * specifies the minimum scale ratio (inImage/outImage) required to initiate prior filtering * A value range of 2.0...4.0 is recommended (0.0: disabled) * offsPtrA specifies the pixel position (0,0) in the input image (format 16.0) */ void bim_filterWarpPixelReplication( struct bbs_Context* cpA, uint8* dstImagePtrA, const uint8* srcImagePtrA, uint32 srcImageWidthA, uint32 srcImageHeightA, const struct bts_Int16Vec2D* offsPtrA, const struct bts_Flt16Alt2D* altPtrA, uint32 dstWidthA, uint32 dstHeightA, struct bbs_UInt8Arr* bufPtrA, uint32 scaleThresholdA ); /** Selects proper warp function above * offsPtrA specifies the pixel position (0,0) in the input image (format 16.0) */ void bim_filterWarp( struct bbs_Context* cpA, uint8* dstImagePtrA, const uint8* srcImagePtrA, uint32 srcImageWidthA, uint32 srcImageHeightA, const struct bts_Int16Vec2D* offsPtrA, const struct bts_Flt16Alt2D* altPtrA, uint32 dstWidthA, uint32 dstHeightA, struct bbs_UInt8Arr* bufPtrA, uint32 scaleThresholdA, flag interpolateA ); #endif /* bim_FUNCTIONS_EM_H */