Commit 2478d1bbc50331e2e57ac39d25f3dd4ba8480f80
Merge branch 'master' of https://github.com/biometrics/openbr
Showing
542 changed files
with
12581 additions
and
11450 deletions
Too many changes.
To preserve performance only 100 of 542 files are displayed.
3rdparty/stasm4.0.0/CMakeLists.txt renamed to 3rdparty/stasm/CMakeLists.txt
| 1 | project(stasm) | 1 | project(stasm) |
| 2 | cmake_minimum_required(VERSION 2.8.6) | 2 | cmake_minimum_required(VERSION 2.8.6) |
| 3 | 3 | ||
| 4 | +if(${CMAKE_VERSION} VERSION_GREATER 2.8.11) | ||
| 5 | + cmake_policy(SET CMP0020 NEW) | ||
| 6 | +endif() | ||
| 7 | + | ||
| 4 | # Global Settings | 8 | # Global Settings |
| 5 | set(CPACK_PACKAGE_NAME "Stasm") | 9 | set(CPACK_PACKAGE_NAME "Stasm") |
| 6 | set(CPACK_PACKAGE_INSTALL_DIRECTORY ${CPACK_PACKAGE_NAME}) | 10 | set(CPACK_PACKAGE_INSTALL_DIRECTORY ${CPACK_PACKAGE_NAME}) |
| 7 | -set(CPACK_PACKAGE_VERSION_MAJOR 3) | 11 | +set(CPACK_PACKAGE_VERSION_MAJOR 4) |
| 8 | set(CPACK_PACKAGE_VERSION_MINOR 1) | 12 | set(CPACK_PACKAGE_VERSION_MINOR 1) |
| 9 | set(CPACK_PACKAGE_VERSION_PATCH 0) | 13 | set(CPACK_PACKAGE_VERSION_PATCH 0) |
| 10 | set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") | 14 | set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") |
| @@ -12,13 +16,11 @@ set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSIO | @@ -12,13 +16,11 @@ set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSIO | ||
| 12 | # find the dependencies | 16 | # find the dependencies |
| 13 | set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake/Modules/") | 17 | set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake/Modules/") |
| 14 | 18 | ||
| 15 | -# Find Qt 5.0.2 | ||
| 16 | set(QT_DEPENDENCIES Concurrent Core Gui Network Sql Svg Widgets Xml) | 19 | set(QT_DEPENDENCIES Concurrent Core Gui Network Sql Svg Widgets Xml) |
| 17 | foreach(QT_DEPENDENCY ${QT_DEPENDENCIES}) | 20 | foreach(QT_DEPENDENCY ${QT_DEPENDENCIES}) |
| 18 | find_package(Qt5${QT_DEPENDENCY}) | 21 | find_package(Qt5${QT_DEPENDENCY}) |
| 19 | endforeach() | 22 | endforeach() |
| 20 | 23 | ||
| 21 | -# OpenCV 2.4.5 | ||
| 22 | set(OPENCV_DEPENDENCIES calib3d core features2d flann gpu highgui imgproc ml nonfree objdetect photo video) | 24 | set(OPENCV_DEPENDENCIES calib3d core features2d flann gpu highgui imgproc ml nonfree objdetect photo video) |
| 23 | find_package( OpenCV REQUIRED ) | 25 | find_package( OpenCV REQUIRED ) |
| 24 | 26 | ||
| @@ -32,18 +34,6 @@ if(MSVC) | @@ -32,18 +34,6 @@ if(MSVC) | ||
| 32 | endif() | 34 | endif() |
| 33 | 35 | ||
| 34 | add_subdirectory(${PROJECT_SOURCE_DIR}/stasm) | 36 | add_subdirectory(${PROJECT_SOURCE_DIR}/stasm) |
| 35 | -if(MSVC) | ||
| 36 | - add_library(stasm STATIC ${SOURCE}) | ||
| 37 | -else() | ||
| 38 | - add_library(stasm SHARED ${SOURCE}) | ||
| 39 | -endif() | ||
| 40 | - | ||
| 41 | -qt5_use_modules(stasm ${QT_DEPENDENCIES}) | ||
| 42 | -set(SOURCE ${SOURCE} PARENT_SCOPE) | ||
| 43 | -target_link_libraries(stasm ${OpenCV_LIBS} ${Qt5Core_QTMAIN_LIBRARIES}) | ||
| 44 | - | ||
| 45 | -install(FILES ${HEADERS} DESTINATION include) | ||
| 46 | -install(TARGETS stasm LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) | ||
| 47 | 37 | ||
| 48 | # Package | 38 | # Package |
| 49 | set(CPACK_BINARY_BUNDLE OFF) | 39 | set(CPACK_BINARY_BUNDLE OFF) |
3rdparty/stasm4.0.0/README.txt renamed to 3rdparty/stasm/README.txt
3rdparty/stasm4.0.0/data/haarcascade_frontalface_alt2.xml renamed to 3rdparty/stasm/data/haarcascade_frontalface_alt2.xml
3rdparty/stasm4.0.0/data/haarcascade_mcs_lefteye.xml renamed to 3rdparty/stasm/data/haarcascade_mcs_lefteye.xml
3rdparty/stasm4.0.0/data/haarcascade_mcs_righteye.xml renamed to 3rdparty/stasm/data/haarcascade_mcs_righteye.xml
3rdparty/stasm4.0.0/doc/HISTORY.txt renamed to 3rdparty/stasm/doc/HISTORY.txt
3rdparty/stasm4.0.0/doc/LICENSE.txt renamed to 3rdparty/stasm/doc/LICENSE.txt
3rdparty/stasm/stasm/CMakeLists.txt
0 โ 100644
| 1 | +# Stasm CMakeLists | ||
| 2 | + | ||
| 3 | +aux_source_directory(stasm/src STASM_SRC) | ||
| 4 | +include_directories(stasm/include) | ||
| 5 | + | ||
| 6 | +#aux_source_directory(tasm/src TASM_SRC) | ||
| 7 | +#include_directories(tasm/include) | ||
| 8 | + | ||
| 9 | +add_library(stasm SHARED ${STASM_SRC} ${TASM_SRC}) | ||
| 10 | +qt5_use_modules(stasm ${QT_DEPENDENCIES}) | ||
| 11 | + | ||
| 12 | +set_target_properties(stasm PROPERTIES | ||
| 13 | + DEFINE_SYMBOL STASM_LIBRARY | ||
| 14 | + VERSION ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH} | ||
| 15 | + SOVERSION ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR} | ||
| 16 | + LINK_INTERFACE_LIBRARIES "" | ||
| 17 | + AUTOMOC TRUE) | ||
| 18 | + | ||
| 19 | +target_link_libraries(stasm ${OpenCV_LIBS} ${Qt5Core_QTMAIN_LIBRARIES}) | ||
| 20 | + | ||
| 21 | +file(GLOB STASM_HEADERS stasm/include/*.h) | ||
| 22 | +install(FILES ${STASM_HEADERS} DESTINATION include/stasm) | ||
| 23 | +file(GLOB CLASSIC_HEADERS stasm/include/classic/*.mh) | ||
| 24 | +install(FILES ${CLASSIC_HEADERS} DESTINATION include/stasm/classic) | ||
| 25 | +file(GLOB HAT_HEADERS stasm/include/hat/*.mh) | ||
| 26 | +install(FILES ${HAT_HEADERS} DESTINATION include/stasm/hat) | ||
| 27 | +#file(GLOB TASM_HEADERS tasm/include/*.h) | ||
| 28 | +#install(FILES ${TASM_HEADERS} DESTINATION include/tasm) | ||
| 29 | + | ||
| 30 | +install(TARGETS stasm RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) |
3rdparty/stasm/stasm/stasm/include/asm.h
0 โ 100755
| 1 | +// asm.h: Active Shape Model class | ||
| 2 | +// | ||
| 3 | +// Freeing memory: In the current implementation, explicit memory release | ||
| 4 | +// on Mod destruction is unneeded (because the MAT buffer pointers in Mod, | ||
| 5 | +// ShapeMod, and DescMod point to constant data). If you add a new descriptor | ||
| 6 | +// model, you may need to add destructors. Although even if that new class | ||
| 7 | +// fails to release memory it's probably not serious, because the ASM | ||
| 8 | +// model(s) are only destructed once, at program termination. | ||
| 9 | +// | ||
| 10 | +// Copyright (C) 2005-2013, Stephen Milborrow | ||
| 11 | + | ||
| 12 | +#ifndef STASM_ASM_H | ||
| 13 | +#define STASM_ASM_H | ||
| 14 | + | ||
| 15 | +#include "misc.h" | ||
| 16 | +#include "basedesc.h" | ||
| 17 | +#include "shapemod.h" | ||
| 18 | +#include "hat.h" | ||
| 19 | +#include "stasmhash.h" | ||
| 20 | + | ||
| 21 | +namespace stasm | ||
| 22 | +{ | ||
| 23 | +static const int EYEMOUTH_DIST = 100; // scale image to this before ASM search starts | ||
| 24 | + | ||
| 25 | +static const double PYR_RATIO = 2; // scale image by 2 at each pyramid level | ||
| 26 | + | ||
| 27 | +static const int N_PYR_LEVS = 4; // number of levs in image pyramid | ||
| 28 | + | ||
| 29 | +static const int SHAPEMODEL_ITERS = 4; // shape model iterations per pyr level | ||
| 30 | + | ||
| 31 | +//----------------------------------------------------------------------------- | ||
| 32 | + | ||
| 33 | +class Mod // An ASM model for finding landmarks. | ||
| 34 | +{ // If multiple model Stasm, will use a separate Mod for each yaw range. | ||
| 35 | +public: | ||
| 36 | + Shape ModSearch_( // returns coords of the facial landmarks | ||
| 37 | + const Shape& startshape, // in: startshape roughly positioned on face | ||
| 38 | + const Image& img, // in: grayscale image (typically just ROI) | ||
| 39 | + const Shape* pinnedshape=NULL) // in: pinned landmarks, NULL if nothing pinned | ||
| 40 | + const; | ||
| 41 | + | ||
| 42 | + const Shape ConformShapeToMod_Pinned_( // wrapper around the func in ShapeMod | ||
| 43 | + const Shape& shape, // in | ||
| 44 | + const Shape& pinnedshape) // in | ||
| 45 | + const | ||
| 46 | + { | ||
| 47 | + VEC b(NSIZE(shapemod_.eigvals_), 1, 0.); // dummy variable for call below | ||
| 48 | + return shapemod_.ConformShapeToMod_Pinned_(b, shape, 0, pinnedshape); | ||
| 49 | + } | ||
| 50 | + | ||
| 51 | + // readonly access to some private vars | ||
| 52 | + ESTART Estart_(void) const { return estart_; } | ||
| 53 | + const char* DataDir_(void) const { return datadir_.c_str(); } | ||
| 54 | + const Shape MeanShape_(void) const { return shapemod_.meanshape_; } | ||
| 55 | + | ||
| 56 | +private: | ||
| 57 | + const vec_vec_BaseDescMod DescMods_( // utility for Mod constructor | ||
| 58 | + const BaseDescMod** const descmods_arg, // in: descriptor models | ||
| 59 | + int ndescmods) // in: sanity check | ||
| 60 | + { | ||
| 61 | + (void) ndescmods; | ||
| 62 | + | ||
| 63 | + vec_vec_BaseDescMod descmods(N_PYR_LEVS); | ||
| 64 | + | ||
| 65 | + for (int ilev = 0; ilev < N_PYR_LEVS; ilev++) | ||
| 66 | + { | ||
| 67 | + descmods[ilev].resize(stasm_NLANDMARKS); | ||
| 68 | + for (int i = 0; i < stasm_NLANDMARKS; i++) | ||
| 69 | + descmods[ilev][i] = | ||
| 70 | + descmods_arg[ilev * stasm_NLANDMARKS + i]; | ||
| 71 | + } | ||
| 72 | + return descmods; | ||
| 73 | + } | ||
| 74 | + | ||
| 75 | +public: | ||
| 76 | + Mod(EYAW eyaw, // constructor | ||
| 77 | + ESTART estart, | ||
| 78 | + string datadir, | ||
| 79 | + Shape meanshape, | ||
| 80 | + VEC eigvals, | ||
| 81 | + MAT eigvecs, | ||
| 82 | + int neigs, | ||
| 83 | + double bmax, | ||
| 84 | + unsigned hackbits, | ||
| 85 | + const BaseDescMod** descmods, | ||
| 86 | + int ndescmods) | ||
| 87 | + | ||
| 88 | + : eyaw_(eyaw), | ||
| 89 | + estart_(estart), | ||
| 90 | + datadir_(datadir), | ||
| 91 | + shapemod_(meanshape, eigvals, eigvecs, neigs, bmax, hackbits), | ||
| 92 | + descmods_(DescMods_(descmods, ndescmods)) | ||
| 93 | + { | ||
| 94 | + CV_Assert(eyaw == EYAW_45 || eyaw == EYAW_22 || eyaw == EYAW00 || | ||
| 95 | + eyaw == EYAW22 || eyaw == EYAW45); | ||
| 96 | + | ||
| 97 | + CV_Assert(estart == ESTART_RECT_ONLY || estart == ESTART_EYES || | ||
| 98 | + estart == ESTART_EYE_AND_MOUTH); | ||
| 99 | + } | ||
| 100 | + | ||
| 101 | + virtual ~Mod() {} // destructor | ||
| 102 | + | ||
| 103 | +private: // all data remains constant after Mod construction | ||
| 104 | + | ||
| 105 | + const EYAW eyaw_; // model is for this yaw range | ||
| 106 | + // e.g. EYAW00 is frontal model | ||
| 107 | + | ||
| 108 | + const ESTART estart_; // use the mouth/eyes to position the start shape? | ||
| 109 | + | ||
| 110 | + const string datadir_; // directory of face detector files | ||
| 111 | + | ||
| 112 | + const ShapeMod shapemod_; // the shape model | ||
| 113 | + | ||
| 114 | + const vec_vec_BaseDescMod descmods_; | ||
| 115 | + // descriptor mods, one for each point at each pyr lev | ||
| 116 | + // index as [ilev][ipoint] | ||
| 117 | + | ||
| 118 | + void SuggestShape_( | ||
| 119 | + Shape& shape, // io: points will be moved to give best desc matches | ||
| 120 | + int ilev, // in: pyramid level (0 is full size) | ||
| 121 | + const Image& img, // in: image scaled to this pyramid level | ||
| 122 | + const Shape& pinned, // in: if no rows then no pinned landmarks, else | ||
| 123 | + // points except those equal to 0,0 are pinned | ||
| 124 | + const Hat &hat, | ||
| 125 | + StasmHash &hash) | ||
| 126 | + const; | ||
| 127 | + | ||
| 128 | + void LevSearch_( // do an ASM search at one level in the image pyr | ||
| 129 | + Shape& shape, // io: the face shape for this pyramid level | ||
| 130 | + int ilev, // in: pyramid level (0 is full size) | ||
| 131 | + const Image& img, // in: image scaled to this pyramid level | ||
| 132 | + const Shape& pinnedshape) // in: if no rows then no pinned landmarks, else | ||
| 133 | + // points except those equal to 0,0 are pinned | ||
| 134 | + const; | ||
| 135 | + | ||
| 136 | + DISALLOW_COPY_AND_ASSIGN(Mod); | ||
| 137 | + | ||
| 138 | +}; // end class Mod | ||
| 139 | + | ||
| 140 | +typedef vector<const Mod*> vec_Mod; // vector of ASM models, one for each yaw range | ||
| 141 | + | ||
| 142 | +//----------------------------------------------------------------------------- | ||
| 143 | + | ||
| 144 | +static inline double GetPyrScale( // return 1 for pyr lev 0, .5 for pyr lev 1, etc. | ||
| 145 | + int ilev) // in: pyramid level (0 is full size) | ||
| 146 | +{ | ||
| 147 | + return 1 / pow(PYR_RATIO, ilev); | ||
| 148 | +} | ||
| 149 | + | ||
| 150 | +// TODO This definition doesn't belong here. | ||
| 151 | +int EyawAsModIndex( // note: returns a negative index for left facing yaws | ||
| 152 | + EYAW eyaw, // in | ||
| 153 | + const vec_Mod& mods); // in: a vector of models, one for each yaw range | ||
| 154 | + | ||
| 155 | +} // namespace stasm | ||
| 156 | +#endif // STASM_ASM_H |
3rdparty/stasm/stasm/stasm/include/atface.h
0 โ 100755
| 1 | +// atface.h: face point attributes | ||
| 2 | +// | ||
| 3 | +// These attributes are used when training new models (they appear in | ||
| 4 | +// LANDMARK_INFO_TAB). They are also sometimes used when testing Stasm. | ||
| 5 | +// They are not needed for doing landmark searches. | ||
| 6 | +// | ||
| 7 | +// Some of these bits apply to the entire image (AT_BadImg); other apply | ||
| 8 | +// only to a specific points (AT_Glasses). | ||
| 9 | +// | ||
| 10 | +// In shape files, the bits appear in the in the "tag" preceding each shape. | ||
| 11 | +// For example | ||
| 12 | +// 0004 d0145 | ||
| 13 | +// means that the face in image d0145.jpg is wearing glasses. | ||
| 14 | + | ||
| 15 | +#ifndef STASM_ATFACE_HPP | ||
| 16 | +#define STASM_ATFACE_HPP | ||
| 17 | + | ||
| 18 | +static const char* const AT_NAMES[] = // used only for information during training | ||
| 19 | +{ | ||
| 20 | + "Male", // AT_Male 0x0001 | ||
| 21 | + "Child", // AT_Child 0x0002 | ||
| 22 | + "Glasses", // AT_Glasses 0x0004 | ||
| 23 | + "Beard", // AT_Beard 0x0008 | ||
| 24 | + "Mustache", // AT_Mustache 0x0010 | ||
| 25 | + "MouthOpen", // AT_MouthOpen 0x0020 | ||
| 26 | + "Expression", // AT_Expression 0x0040 | ||
| 27 | + "Eye", // AT_Eye 0x0080 | ||
| 28 | + "BadImg", // AT_BadImg 0x0100 | ||
| 29 | + "Cropped", // AT_Cropped 0x0200 | ||
| 30 | + "Obscured", // AT_Obscured 0x0400 | ||
| 31 | + "BadEye", // AT_BadEye 0x0800 | ||
| 32 | + "Hat", // AT_Hat 0x1000 | ||
| 33 | + "Unused", // AT_Hat 0x2000 | ||
| 34 | + "MultiFace", // AT_MultiFace 0x4000 | ||
| 35 | + "BadTrain", // AT_BadTrain 0x8000 | ||
| 36 | +}; | ||
| 37 | + | ||
| 38 | +static const unsigned AT_Male = 0x0001; // gender, 1=male | ||
| 39 | +static const unsigned AT_Child = 0x0002; // child | ||
| 40 | +static const unsigned AT_Glasses = 0x0004; // face is wearing specs | ||
| 41 | +static const unsigned AT_Beard = 0x0008; // beard including possible mustache | ||
| 42 | +static const unsigned AT_Mustache = 0x0010; // mustache | ||
| 43 | +static const unsigned AT_MouthOpen = 0x0020; // mouth is open | ||
| 44 | +static const unsigned AT_Expression = 0x0040; // non-neutral expression on face | ||
| 45 | +static const unsigned AT_Eye = 0x0080; // is eye landmark, used only during training | ||
| 46 | + | ||
| 47 | +static const unsigned AT_BadImg = 0x0100; // image is "bad" in some way (blurred, duplicated, etc.) | ||
| 48 | +static const unsigned AT_Cropped = 0x0200; // a landmark would be off the page | ||
| 49 | +static const unsigned AT_Obscured = 0x0400; // face is obscured e.g. by subject's hand | ||
| 50 | +static const unsigned AT_BadEye = 0x0800; // an eye is closed or obscured by hair etc. | ||
| 51 | +static const unsigned AT_Hat = 0x1000; // HAT desciptor (ignored if pyr lev > HAT_START_LEV) | ||
| 52 | + | ||
| 53 | +// following are currently used only in aflw.shape | ||
| 54 | +static const unsigned AT_MultiFace = 0x4000; // multiple faces in the image | ||
| 55 | +static const unsigned AT_BadTrain = 0x8000; // face is not suitable for training face det | ||
| 56 | + // (by manual inspection of train face rects) | ||
| 57 | + | ||
| 58 | +static const unsigned AT_Meta = 0xFF000000; // "meta bits" used for face and pose detectors | ||
| 59 | + | ||
| 60 | +static const unsigned AT_Pose = 0x80000000; // 4 elements: yaw, pitch, roll, estimated_err | ||
| 61 | + | ||
| 62 | +static const unsigned AT_EYAW00 = 0x81000000; // yaw00 face detector results, see DetPar | ||
| 63 | +static const unsigned AT_EYAW22 = 0x82000000; | ||
| 64 | +static const unsigned AT_EYAW45 = 0x83000000; | ||
| 65 | +static const unsigned AT_EYAW_22 = 0x8A000000; // ms bit of nibble indicates negative yaw | ||
| 66 | +static const unsigned AT_EYAW_45 = 0x8B000000; | ||
| 67 | + | ||
| 68 | +static const unsigned AT_Any = 0xFFFFFFFF; // special case, match any bit in Mask0 | ||
| 69 | + | ||
| 70 | +#endif // STASM_ATFACE_HPP |
3rdparty/stasm/stasm/stasm/include/basedesc.h
0 โ 100755
| 1 | +// basedesc.h: descriptor model base class | ||
| 2 | +// | ||
| 3 | +// A "descriptor model" tells you how to use the given | ||
| 4 | +// descriptor to suggest the best position of a landscape. | ||
| 5 | +// | ||
| 6 | +// Stasm currently uses two types of descriptors, and thus two descriptor | ||
| 7 | +// model classes: ClassicDescMod and HatDescMod. Each of these classes | ||
| 8 | +// provide a descriptor matching function, DescSearch_, which searches around | ||
| 9 | +// the current position of a landmark, looking for the best new position. | ||
| 10 | +// | ||
| 11 | +// About BaseDescMod: We need a vector of descriptor models to specify how | ||
| 12 | +// to search by matching against a descriptor at each landmark. Some | ||
| 13 | +// landmarks use ClassicDescMods; other use HatDescMods. We thus need a | ||
| 14 | +// vector of heterogeneous objects. But C++ doesn't support vectors of | ||
| 15 | +// heterogeneous objects. So instead we use a vector of pointers to | ||
| 16 | +// BaseDescMod, with the actual descriptor model classes (ClassicDescMod | ||
| 17 | +// and HatDescMod) deriving from BaseDescMod. | ||
| 18 | +// | ||
| 19 | +// Memory release: Explicit destructors unneeded, see note in header of asm.h. | ||
| 20 | +// | ||
| 21 | +// DescSearch_ and concurrency: If OpenMP is enabled, DescSearch_ will be | ||
| 22 | +// called concurrently for multiple points. (Each call will have a | ||
| 23 | +// different value of x and y.) Thus for the OpenMP code to work | ||
| 24 | +// correctly, DescSearch_ and its callees must not modify any variables that | ||
| 25 | +// are not on the stack unless the variable is protected by a critical region. | ||
| 26 | +// | ||
| 27 | +// Copyright (C) 2005-2013, Stephen Milborrow | ||
| 28 | + | ||
| 29 | +#ifndef STASM_BASEDESC_H | ||
| 30 | +#define STASM_BASEDESC_H | ||
| 31 | + | ||
| 32 | +#include "hat.h" | ||
| 33 | +#include "stasmhash.h" | ||
| 34 | + | ||
| 35 | +namespace stasm | ||
| 36 | +{ | ||
| 37 | +class BaseDescMod // abstract base class for all descriptor models | ||
| 38 | +{ | ||
| 39 | +public: | ||
| 40 | + virtual void DescSearch_( // search in area around the current point | ||
| 41 | + double& x, // io: (in: old posn of landmark, out: new posn) | ||
| 42 | + double& y, // io | ||
| 43 | + const Image& img, // in: image scaled to this pyramid level | ||
| 44 | + const Shape& shape, // in: current position of the landmarks | ||
| 45 | + int ilev, // in: pyramid level (0 is full size) | ||
| 46 | + int ipoint, // in: index of the current landmark | ||
| 47 | + const Hat &hat, | ||
| 48 | + StasmHash &hash) | ||
| 49 | + const = 0; | ||
| 50 | + | ||
| 51 | + virtual ~BaseDescMod() {} // destructor | ||
| 52 | +}; | ||
| 53 | + | ||
| 54 | +// vec_vec_BaseDescMod contains the descriptor models, one pointer | ||
| 55 | +// for each landmark at each pyramid level, index as [ilev][ipoint] | ||
| 56 | + | ||
| 57 | +typedef vector<vector<const BaseDescMod*> > vec_vec_BaseDescMod; | ||
| 58 | + | ||
| 59 | +} // namespace stasm | ||
| 60 | +#endif // STASM_BASEDESC_H |
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev0_p00.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev0_p00.mh
| @@ -3,6 +3,8 @@ | @@ -3,6 +3,8 @@ | ||
| 3 | #ifndef STASM_CLASSIC_YAW00_LEV0_P00_MH | 3 | #ifndef STASM_CLASSIC_YAW00_LEV0_P00_MH |
| 4 | #define STASM_CLASSIC_YAW00_LEV0_P00_MH | 4 | #define STASM_CLASSIC_YAW00_LEV0_P00_MH |
| 5 | 5 | ||
| 6 | +#include "classicdesc.h" | ||
| 7 | + | ||
| 6 | namespace stasm { | 8 | namespace stasm { |
| 7 | 9 | ||
| 8 | // Generated from muct77_w09.asm | 10 | // Generated from muct77_w09.asm |
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev0_p01.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev0_p01.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev0_p02.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev0_p02.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev0_p03.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev0_p03.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev0_p04.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev0_p04.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev0_p05.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev0_p05.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev0_p06.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev0_p06.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev0_p07.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev0_p07.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev0_p08.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev0_p08.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev0_p09.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev0_p09.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev0_p10.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev0_p10.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev0_p11.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev0_p11.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev0_p12.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev0_p12.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev0_p13.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev0_p13.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev0_p14.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev0_p14.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev0_p15.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev0_p15.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev1_p00.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev1_p00.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev1_p01.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev1_p01.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev1_p02.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev1_p02.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev1_p03.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev1_p03.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev1_p04.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev1_p04.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev1_p05.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev1_p05.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev1_p06.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev1_p06.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev1_p07.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev1_p07.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev1_p08.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev1_p08.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev1_p09.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev1_p09.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev1_p10.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev1_p10.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev1_p11.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev1_p11.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev1_p12.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev1_p12.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev1_p13.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev1_p13.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev1_p14.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev1_p14.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev1_p15.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev1_p15.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev2_p00.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev2_p00.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev2_p01.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev2_p01.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev2_p02.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev2_p02.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev2_p03.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev2_p03.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev2_p04.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev2_p04.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev2_p05.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev2_p05.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev2_p06.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev2_p06.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev2_p07.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev2_p07.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev2_p08.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev2_p08.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev2_p09.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev2_p09.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev2_p10.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev2_p10.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev2_p11.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev2_p11.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev2_p12.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev2_p12.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev2_p13.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev2_p13.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev2_p14.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev2_p14.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev2_p15.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev2_p15.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev3_p00.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev3_p00.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev3_p01.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev3_p01.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev3_p02.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev3_p02.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev3_p03.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev3_p03.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev3_p04.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev3_p04.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev3_p05.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev3_p05.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev3_p06.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev3_p06.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev3_p07.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev3_p07.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev3_p08.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev3_p08.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev3_p09.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev3_p09.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev3_p10.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev3_p10.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev3_p11.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev3_p11.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev3_p12.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev3_p12.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev3_p13.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev3_p13.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev3_p14.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev3_p14.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev3_p15.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev3_p15.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev3_p16.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev3_p16.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev3_p17.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev3_p17.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev3_p18.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev3_p18.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev3_p19.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev3_p19.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev3_p20.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev3_p20.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev3_p21.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev3_p21.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev3_p22.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev3_p22.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev3_p23.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev3_p23.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev3_p24.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev3_p24.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev3_p25.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev3_p25.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev3_p26.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev3_p26.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev3_p27.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev3_p27.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev3_p28.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev3_p28.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev3_p29.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev3_p29.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev3_p30.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev3_p30.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev3_p31.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev3_p31.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev3_p32.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev3_p32.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev3_p33.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev3_p33.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev3_p34.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev3_p34.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev3_p35.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev3_p35.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev3_p36.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev3_p36.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev3_p37.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev3_p37.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev3_p38.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev3_p38.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev3_p39.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev3_p39.mh
3rdparty/stasm4.0.0/stasm/MOD_1/classic/classic_yaw00_lev3_p40.mh renamed to 3rdparty/stasm/stasm/stasm/include/classic/classic_yaw00_lev3_p40.mh