From 1317c3d178cdc8c22fcdbe88892633dca63df147 Mon Sep 17 00:00:00 2001 From: Alexander Alekhin Date: Mon, 19 Nov 2018 19:11:52 +0300 Subject: [PATCH 01/14] cmake: don't generate dllmain for cudev module --- cmake/OpenCVModule.cmake | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/cmake/OpenCVModule.cmake b/cmake/OpenCVModule.cmake index 495787ff81..3c45d774cc 100644 --- a/cmake/OpenCVModule.cmake +++ b/cmake/OpenCVModule.cmake @@ -909,7 +909,11 @@ macro(_ocv_create_module) source_group("Src" FILES "${_VS_VERSION_FILE}") endif() endif() - if(WIN32 AND NOT ("${the_module}" STREQUAL "opencv_core" OR "${the_module}" STREQUAL "opencv_world") + if(WIN32 AND NOT ( + "${the_module}" STREQUAL "opencv_core" OR + "${the_module}" STREQUAL "opencv_world" OR + "${the_module}" STREQUAL "opencv_cudev" + ) AND (BUILD_SHARED_LIBS AND NOT "x${OPENCV_MODULE_TYPE}" STREQUAL "xSTATIC") AND NOT OPENCV_SKIP_DLLMAIN_GENERATION ) From a1c073d289060d82c43ec535b74a5fe481a9e88a Mon Sep 17 00:00:00 2001 From: Tomoaki Teshima Date: Wed, 21 Nov 2018 23:04:23 +0900 Subject: [PATCH 02/14] add missing API cvGetPropVisible_W32 --- modules/highgui/src/precomp.hpp | 2 ++ modules/highgui/src/window.cpp | 2 ++ modules/highgui/src/window_w32.cpp | 18 ++++++++++++++++++ 3 files changed, 22 insertions(+) diff --git a/modules/highgui/src/precomp.hpp b/modules/highgui/src/precomp.hpp index 1d72a5d7a2..1bcc22f610 100644 --- a/modules/highgui/src/precomp.hpp +++ b/modules/highgui/src/precomp.hpp @@ -114,6 +114,8 @@ double cvGetRatioWindow_GTK(const char* name); double cvGetOpenGlProp_W32(const char* name); double cvGetOpenGlProp_GTK(const char* name); +double cvGetPropVisible_W32(const char* name); + //for QT #if defined (HAVE_QT) CvRect cvGetWindowRect_QT(const char* name); diff --git a/modules/highgui/src/window.cpp b/modules/highgui/src/window.cpp index ad08af60c0..939d3c4eb1 100644 --- a/modules/highgui/src/window.cpp +++ b/modules/highgui/src/window.cpp @@ -156,6 +156,8 @@ CV_IMPL double cvGetWindowProperty(const char* name, int prop_id) case CV_WND_PROP_VISIBLE: #if defined (HAVE_QT) return cvGetPropVisible_QT(name); + #elif defined(HAVE_WIN32UI) + return cvGetPropVisible_W32(name); #else return -1; #endif diff --git a/modules/highgui/src/window_w32.cpp b/modules/highgui/src/window_w32.cpp index e67fb4e187..e7141cb82c 100644 --- a/modules/highgui/src/window_w32.cpp +++ b/modules/highgui/src/window_w32.cpp @@ -629,6 +629,24 @@ double cvGetOpenGlProp_W32(const char* name) return result; } +double cvGetPropVisible_W32(const char* name) +{ + double result = -1; + + CV_FUNCNAME( "cvGetPropVisible_W32" ); + + __BEGIN__; + + if (!name) + CV_ERROR( CV_StsNullPtr, "NULL name string" ); + + result = (icvFindWindowByName( name ) != NULL); + + __END__; + + return result; +} + // OpenGL support From e1a2c034e85e37c9f04491e784477471e2748d55 Mon Sep 17 00:00:00 2001 From: Vitaly Tuzov Date: Mon, 19 Nov 2018 18:53:12 +0300 Subject: [PATCH 03/14] Updated findContours to use wide universal intrinsics --- modules/imgproc/src/contours.cpp | 175 ++++++++----------------------- 1 file changed, 45 insertions(+), 130 deletions(-) diff --git a/modules/imgproc/src/contours.cpp b/modules/imgproc/src/contours.cpp index f4d0be59d0..b952296279 100644 --- a/modules/imgproc/src/contours.cpp +++ b/modules/imgproc/src/contours.cpp @@ -41,6 +41,8 @@ #include "precomp.hpp" #include "opencv2/core/hal/intrin.hpp" +using namespace cv; + /* initializes 8-element array for fast access to 3x3 neighborhood of a pixel */ #define CV_INIT_3X3_DELTAS( deltas, step, nch ) \ ((deltas)[0] = (nch), (deltas)[1] = -(step) + (nch), \ @@ -1006,10 +1008,6 @@ cvFindNextContour( CvContourScanner scanner ) if( !scanner ) CV_Error( CV_StsNullPtr, "" ); -#if CV_SSE2 - bool haveSIMD = cv::checkHardwareSupport(CPU_SSE2); -#endif - CV_Assert(scanner->img_step >= 0); icvEndProcessContour( scanner ); @@ -1056,48 +1054,22 @@ cvFindNextContour( CvContourScanner scanner ) } else { -#if CV_SSE2 - if ((p = img[x]) != prev) { +#if CV_SIMD + if ((p = img[x]) != prev) + { goto _next_contour; - } else if (haveSIMD) { - - __m128i v_prev = _mm_set1_epi8((char)prev); - int v_size = width - 32; - - for (; x <= v_size; x += 32) { - __m128i v_p1 = _mm_loadu_si128((const __m128i*)(img + x)); - __m128i v_p2 = _mm_loadu_si128((const __m128i*)(img + x + 16)); - - __m128i v_cmp1 = _mm_cmpeq_epi8(v_p1, v_prev); - __m128i v_cmp2 = _mm_cmpeq_epi8(v_p2, v_prev); - - unsigned int mask1 = _mm_movemask_epi8(v_cmp1); - unsigned int mask2 = _mm_movemask_epi8(v_cmp2); - - mask1 ^= 0x0000ffff; - mask2 ^= 0x0000ffff; - - if (mask1) { - p = img[(x += cv::trailingZeros32(mask1))]; - goto _next_contour; - } - - if (mask2) { - p = img[(x += cv::trailingZeros32(mask2 << 16))]; - goto _next_contour; - } - } - - if(x <= width - 16) { - __m128i v_p = _mm_loadu_si128((__m128i*)(img + x)); - - unsigned int mask = _mm_movemask_epi8(_mm_cmpeq_epi8(v_p, v_prev)) ^ 0x0000ffff; - - if (mask) { + } + else + { + v_uint8 v_prev = vx_setall_u8((uchar)prev); + for (; x <= width - v_uint8::nlanes; x += v_uint8::nlanes) + { + unsigned int mask = (unsigned int)v_signmask(vx_load((uchar*)(img + x)) != v_prev); + if (mask) + { p = img[(x += cv::trailingZeros32(mask))]; goto _next_contour; } - x += 16; } } #endif @@ -1107,7 +1079,7 @@ cvFindNextContour( CvContourScanner scanner ) if( x >= width ) break; -#if CV_SSE2 +#if CV_SIMD _next_contour: #endif { @@ -1353,99 +1325,45 @@ typedef struct CvLinkedRunPoint } CvLinkedRunPoint; -inline int findStartContourPoint(uchar *src_data, CvSize img_size, int j, bool haveSIMD) { -#if CV_SSE2 - if (haveSIMD) { - __m128i v_zero = _mm_setzero_si128(); - int v_size = img_size.width - 32; - - for (; j <= v_size; j += 32) { - __m128i v_p1 = _mm_loadu_si128((const __m128i*)(src_data + j)); - __m128i v_p2 = _mm_loadu_si128((const __m128i*)(src_data + j + 16)); - - __m128i v_cmp1 = _mm_cmpeq_epi8(v_p1, v_zero); - __m128i v_cmp2 = _mm_cmpeq_epi8(v_p2, v_zero); - - unsigned int mask1 = _mm_movemask_epi8(v_cmp1); - unsigned int mask2 = _mm_movemask_epi8(v_cmp2); - - mask1 ^= 0x0000ffff; - mask2 ^= 0x0000ffff; - - if (mask1) { - j += cv::trailingZeros32(mask1); - return j; - } - - if (mask2) { - j += cv::trailingZeros32(mask2 << 16); - return j; - } - } - - if (j <= img_size.width - 16) { - __m128i v_p = _mm_loadu_si128((const __m128i*)(src_data + j)); - - unsigned int mask = _mm_movemask_epi8(_mm_cmpeq_epi8(v_p, v_zero)) ^ 0x0000ffff; - - if (mask) { - j += cv::trailingZeros32(mask); - return j; - } - j += 16; +inline int findStartContourPoint(uchar *src_data, CvSize img_size, int j) +{ +#if CV_SIMD + v_uint8 v_zero = vx_setzero_u8(); + for (; j <= img_size.width - v_uint8::nlanes; j += v_uint8::nlanes) + { + unsigned int mask = (unsigned int)v_signmask(vx_load((uchar*)(src_data + j)) != v_zero); + if (mask) + { + j += cv::trailingZeros32(mask); + return j; } } -#else - CV_UNUSED(haveSIMD); #endif for (; j < img_size.width && !src_data[j]; ++j) ; return j; } -inline int findEndContourPoint(uchar *src_data, CvSize img_size, int j, bool haveSIMD) { -#if CV_SSE2 - if (j < img_size.width && !src_data[j]) { +inline int findEndContourPoint(uchar *src_data, CvSize img_size, int j) +{ +#if CV_SIMD + if (j < img_size.width && !src_data[j]) + { return j; - } else if (haveSIMD) { - __m128i v_zero = _mm_setzero_si128(); - int v_size = img_size.width - 32; - - for (; j <= v_size; j += 32) { - __m128i v_p1 = _mm_loadu_si128((const __m128i*)(src_data + j)); - __m128i v_p2 = _mm_loadu_si128((const __m128i*)(src_data + j + 16)); - - __m128i v_cmp1 = _mm_cmpeq_epi8(v_p1, v_zero); - __m128i v_cmp2 = _mm_cmpeq_epi8(v_p2, v_zero); - - unsigned int mask1 = _mm_movemask_epi8(v_cmp1); - unsigned int mask2 = _mm_movemask_epi8(v_cmp2); - - if (mask1) { - j += cv::trailingZeros32(mask1); - return j; - } - - if (mask2) { - j += cv::trailingZeros32(mask2 << 16); - return j; - } - } - - if (j <= img_size.width - 16) { - __m128i v_p = _mm_loadu_si128((const __m128i*)(src_data + j)); - - unsigned int mask = _mm_movemask_epi8(_mm_cmpeq_epi8(v_p, v_zero)); - - if (mask) { + } + else + { + v_uint8 v_zero = vx_setzero_u8(); + for (; j <= img_size.width - v_uint8::nlanes; j += v_uint8::nlanes) + { + unsigned int mask = (unsigned int)v_signmask(vx_load((uchar*)(src_data + j)) == v_zero); + if (mask) + { j += cv::trailingZeros32(mask); return j; } - j += 16; } } -#else - CV_UNUSED(haveSIMD); #endif for (; j < img_size.width && src_data[j]; ++j) ; @@ -1475,7 +1393,6 @@ icvFindContoursInInterval( const CvArr* src, int lower_total; int upper_total; int all_total; - bool haveSIMD = false; CvSeq* runs; CvLinkedRunPoint tmp; @@ -1505,9 +1422,7 @@ icvFindContoursInInterval( const CvArr* src, if( contourHeaderSize < (int)sizeof(CvContour)) CV_Error( CV_StsBadSize, "Contour header size must be >= sizeof(CvContour)" ); -#if CV_SSE2 - haveSIMD = cv::checkHardwareSupport(CPU_SSE2); -#endif + storage00.reset(cvCreateChildMemStorage(storage)); storage01.reset(cvCreateChildMemStorage(storage)); @@ -1539,7 +1454,7 @@ icvFindContoursInInterval( const CvArr* src, tmp_prev = upper_line; for( j = 0; j < img_size.width; ) { - j = findStartContourPoint(src_data, cvSize(img_size), j, haveSIMD); + j = findStartContourPoint(src_data, cvSize(img_size), j); if( j == img_size.width ) break; @@ -1549,7 +1464,7 @@ icvFindContoursInInterval( const CvArr* src, tmp_prev->next = (CvLinkedRunPoint*)CV_GET_WRITTEN_ELEM( writer ); tmp_prev = tmp_prev->next; - j = findEndContourPoint(src_data, cvSize(img_size), j + 1, haveSIMD); + j = findEndContourPoint(src_data, cvSize(img_size), j + 1); tmp.pt.x = j - 1; CV_WRITE_SEQ_ELEM( tmp, writer ); @@ -1573,7 +1488,7 @@ icvFindContoursInInterval( const CvArr* src, all_total = runs->total; for( j = 0; j < img_size.width; ) { - j = findStartContourPoint(src_data, cvSize(img_size), j, haveSIMD); + j = findStartContourPoint(src_data, cvSize(img_size), j); if( j == img_size.width ) break; @@ -1582,7 +1497,7 @@ icvFindContoursInInterval( const CvArr* src, tmp_prev->next = (CvLinkedRunPoint*)CV_GET_WRITTEN_ELEM( writer ); tmp_prev = tmp_prev->next; - j = findEndContourPoint(src_data, cvSize(img_size), j + 1, haveSIMD); + j = findEndContourPoint(src_data, cvSize(img_size), j + 1); tmp.pt.x = j - 1; CV_WRITE_SEQ_ELEM( tmp, writer ); From e9e8bf4b81d198d4fb7d7732ce13fee9657ba353 Mon Sep 17 00:00:00 2001 From: Vitaly Tuzov Date: Tue, 20 Nov 2018 20:00:37 +0300 Subject: [PATCH 04/14] Added performance tests for findContours --- modules/imgproc/perf/perf_contours.cpp | 87 ++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 modules/imgproc/perf/perf_contours.cpp diff --git a/modules/imgproc/perf/perf_contours.cpp b/modules/imgproc/perf/perf_contours.cpp new file mode 100644 index 0000000000..7606605cce --- /dev/null +++ b/modules/imgproc/perf/perf_contours.cpp @@ -0,0 +1,87 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +#include "perf_precomp.hpp" + +namespace opencv_test { + +CV_ENUM(RetrMode, RETR_EXTERNAL, RETR_LIST, RETR_CCOMP, RETR_TREE) +CV_ENUM(ApproxMode, CHAIN_APPROX_NONE, CHAIN_APPROX_SIMPLE, CHAIN_APPROX_TC89_L1, CHAIN_APPROX_TC89_KCOS) + +typedef TestBaseWithParam< tuple > TestFindContours; + +PERF_TEST_P(TestFindContours, findContours, + Combine( + Values( szVGA, sz1080p ), // image size + RetrMode::all(), // retrieval mode + ApproxMode::all(), // approximation method + Values( 32, 128 ) // blob count + ) + ) +{ + Size img_size = get<0>(GetParam()); + int retr_mode = get<1>(GetParam()); + int approx_method = get<2>(GetParam()); + int blob_count = get<3>(GetParam()); + + RNG rng; + Mat img = Mat::zeros(img_size, CV_8UC1); + for(int i = 0; i < blob_count; i++ ) + { + Point center; + center.x = (unsigned)rng % (img.cols-2); + center.y = (unsigned)rng % (img.rows-2); + Size axes; + axes.width = ((unsigned)rng % 49 + 2)/2; + axes.height = ((unsigned)rng % 49 + 2)/2; + double angle = (unsigned)rng % 180; + int brightness = (unsigned)rng % 2; + + // keep the border clear + ellipse( img(Rect(1,1,img.cols-2,img.rows-2)), Point(center), Size(axes), angle, 0., 360., Scalar(brightness), -1); + } + vector< vector > contours; + + TEST_CYCLE() findContours( img, contours, retr_mode, approx_method ); + + SANITY_CHECK_NOTHING(); +} + +typedef TestBaseWithParam< tuple > TestFindContoursFF; + +PERF_TEST_P(TestFindContoursFF, findContours, + Combine( + Values(szVGA, sz1080p), // image size + ApproxMode::all(), // approximation method + Values(32, 128) // blob count + ) +) +{ + Size img_size = get<0>(GetParam()); + int approx_method = get<1>(GetParam()); + int blob_count = get<2>(GetParam()); + + RNG rng; + Mat img = Mat::zeros(img_size, CV_32SC1); + for (int i = 0; i < blob_count; i++) + { + Point center; + center.x = (unsigned)rng % (img.cols - 2); + center.y = (unsigned)rng % (img.rows - 2); + Size axes; + axes.width = ((unsigned)rng % 49 + 2) / 2; + axes.height = ((unsigned)rng % 49 + 2) / 2; + double angle = (unsigned)rng % 180; + int brightness = (unsigned)rng % 2; + + // keep the border clear + ellipse(img(Rect(1, 1, img.cols - 2, img.rows - 2)), Point(center), Size(axes), angle, 0., 360., Scalar(brightness), -1); + } + vector< vector > contours; + + TEST_CYCLE() findContours(img, contours, RETR_FLOODFILL, approx_method); + + SANITY_CHECK_NOTHING(); +} + +} // namespace From 736683ce2f133938601b571ae24bf65c429af946 Mon Sep 17 00:00:00 2001 From: Etienne Brateau Date: Thu, 22 Nov 2018 01:39:09 +0100 Subject: [PATCH 05/14] Fix missing check part (defined(__cplusplus)) in header types_c.h --- modules/core/include/opencv2/core/types_c.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/core/include/opencv2/core/types_c.h b/modules/core/include/opencv2/core/types_c.h index d4216e0df4..5f63eb8fb4 100644 --- a/modules/core/include/opencv2/core/types_c.h +++ b/modules/core/include/opencv2/core/types_c.h @@ -364,7 +364,7 @@ IplImage; CV_INLINE IplImage cvIplImage() { -#if !defined(CV__ENABLE_C_API_CTORS) +#if !(defined(CV__ENABLE_C_API_CTORS) && defined(__cplusplus)) IplImage self = CV_STRUCT_INITIALIZER; self.nSize = sizeof(IplImage); return self; #else return _IplImage(); From 724620b476dc66d1d2c7b75d98360fd93c8140a4 Mon Sep 17 00:00:00 2001 From: Bram Date: Wed, 21 Nov 2018 16:05:22 +0100 Subject: [PATCH 06/14] Fixed build on FreeBSD --- modules/core/src/utils/filesystem.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/core/src/utils/filesystem.cpp b/modules/core/src/utils/filesystem.cpp index 6b444771b6..3505951ffb 100644 --- a/modules/core/src/utils/filesystem.cpp +++ b/modules/core/src/utils/filesystem.cpp @@ -34,7 +34,7 @@ #include #include #include -#elif defined __linux__ || defined __APPLE__ || defined __HAIKU__ +#elif defined __linux__ || defined __APPLE__ || defined __HAIKU__ || defined __FreeBSD__ #include #include #include @@ -178,7 +178,7 @@ cv::String getcwd() sz = GetCurrentDirectoryA((DWORD)buf.size(), buf.data()); return cv::String(buf.data(), (size_t)sz); #endif -#elif defined __linux__ || defined __APPLE__ || defined __HAIKU__ +#elif defined __linux__ || defined __APPLE__ || defined __HAIKU__ || defined __FreeBSD__ for(;;) { char* p = ::getcwd(buf.data(), buf.size()); @@ -212,7 +212,7 @@ bool createDirectory(const cv::String& path) #else int result = _mkdir(path.c_str()); #endif -#elif defined __linux__ || defined __APPLE__ || defined __HAIKU__ +#elif defined __linux__ || defined __APPLE__ || defined __HAIKU__ || defined __FreeBSD__ int result = mkdir(path.c_str(), 0777); #else int result = -1; @@ -327,7 +327,7 @@ private: Impl& operator=(const Impl&); // disabled }; -#elif defined __linux__ || defined __APPLE__ || defined __HAIKU__ +#elif defined __linux__ || defined __APPLE__ || defined __HAIKU__ || defined __FreeBSD__ struct FileLock::Impl { @@ -441,7 +441,7 @@ cv::String getCacheDirectory(const char* sub_directory_name, const char* configu default_cache_path = "/tmp/"; CV_LOG_WARNING(NULL, "Using world accessible cache directory. This may be not secure: " << default_cache_path); } -#elif defined __linux__ || defined __HAIKU__ +#elif defined __linux__ || defined __HAIKU__ || defined __FreeBSD__ // https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html if (default_cache_path.empty()) { From 2f6f52d644b97881cc288863d80892b926db5814 Mon Sep 17 00:00:00 2001 From: Dmitry Kurtaev Date: Fri, 23 Nov 2018 18:23:27 +0300 Subject: [PATCH 07/14] Fix ONNX's emotion_ferplus model. Reduce input size for OpenPose tests --- modules/dnn/src/onnx/onnx_importer.cpp | 23 +++++++++++++++++++++-- modules/dnn/test/test_backends.cpp | 6 +++--- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/modules/dnn/src/onnx/onnx_importer.cpp b/modules/dnn/src/onnx/onnx_importer.cpp index f1c6f43271..22eda5046c 100644 --- a/modules/dnn/src/onnx/onnx_importer.cpp +++ b/modules/dnn/src/onnx/onnx_importer.cpp @@ -358,7 +358,8 @@ void ONNXImporter::populateNet(Net dstNet) layerParams.set("shift", blob.at(0)); } else { - layerParams.type = "Shift"; + layerParams.type = "Scale"; + layerParams.set("bias_term", true); layerParams.blobs.push_back(blob); } } @@ -375,10 +376,28 @@ void ONNXImporter::populateNet(Net dstNet) layerParams.set("shift", blob.at(0)); } else { - layerParams.type = "Shift"; + layerParams.type = "Scale"; + layerParams.set("has_bias", true); layerParams.blobs.push_back(blob); } } + else if (layer_type == "Div") + { + Mat blob = getBlob(node_proto, constBlobs, 1); + CV_Assert_N(blob.type() == CV_32F, blob.total()); + divide(1.0, blob, blob); + if (blob.total() == 1) + { + layerParams.set("scale", blob.at(0)); + layerParams.type = "Power"; + } + else + { + layerParams.type = "Scale"; + layerParams.blobs.push_back(blob); + layerParams.set("bias_term", false); + } + } else if (layer_type == "Constant") { CV_Assert(node_proto.input_size() == 0); diff --git a/modules/dnn/test/test_backends.cpp b/modules/dnn/test/test_backends.cpp index 020703cbd0..a18b25e71a 100644 --- a/modules/dnn/test/test_backends.cpp +++ b/modules/dnn/test/test_backends.cpp @@ -197,7 +197,7 @@ TEST_P(DNNTestNetwork, OpenPose_pose_coco) (backend == DNN_BACKEND_INFERENCE_ENGINE && target == DNN_TARGET_MYRIAD)) throw SkipTestException(""); processNet("dnn/openpose_pose_coco.caffemodel", "dnn/openpose_pose_coco.prototxt", - Size(368, 368)); + Size(46, 46)); } TEST_P(DNNTestNetwork, OpenPose_pose_mpi) @@ -206,7 +206,7 @@ TEST_P(DNNTestNetwork, OpenPose_pose_mpi) (backend == DNN_BACKEND_INFERENCE_ENGINE && target == DNN_TARGET_MYRIAD)) throw SkipTestException(""); processNet("dnn/openpose_pose_mpi.caffemodel", "dnn/openpose_pose_mpi.prototxt", - Size(368, 368)); + Size(46, 46)); } TEST_P(DNNTestNetwork, OpenPose_pose_mpi_faster_4_stages) @@ -217,7 +217,7 @@ TEST_P(DNNTestNetwork, OpenPose_pose_mpi_faster_4_stages) // The same .caffemodel but modified .prototxt // See https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/src/openpose/pose/poseParameters.cpp processNet("dnn/openpose_pose_mpi.caffemodel", "dnn/openpose_pose_mpi_faster_4_stages.prototxt", - Size(368, 368)); + Size(46, 46)); } TEST_P(DNNTestNetwork, OpenFace) From ad35b79e3f98b4ce30481e0299cca550ed77aef0 Mon Sep 17 00:00:00 2001 From: Alexander Alekhin Date: Thu, 22 Nov 2018 21:06:33 +0000 Subject: [PATCH 08/14] python: update install paths - don't require "OPENCV_PYTHON{2,3}_INSTALL_PATH" if OPENCV_SKIP_PYTHON_LOADER=ON - avoid unnecessary relative paths in generated config-X.Y.py --- CMakeLists.txt | 4 ++-- modules/python/common.cmake | 14 +++++++++----- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fde8b578ba..6298f4438c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1494,7 +1494,7 @@ if(BUILD_opencv_python2) status(" Libraries:" HAVE_opencv_python2 THEN "${PYTHON2_LIBRARIES}" ELSE NO) endif() status(" numpy:" PYTHON2_NUMPY_INCLUDE_DIRS THEN "${PYTHON2_NUMPY_INCLUDE_DIRS} (ver ${PYTHON2_NUMPY_VERSION})" ELSE "NO (Python wrappers can not be generated)") - status(" packages path:" PYTHON2_EXECUTABLE THEN "${PYTHON2_PACKAGES_PATH}" ELSE "-") + status(" install path:" HAVE_opencv_python2 THEN "${__INSTALL_PATH_PYTHON2}" ELSE "-") endif() if(BUILD_opencv_python3) @@ -1507,7 +1507,7 @@ if(BUILD_opencv_python3) status(" Libraries:" HAVE_opencv_python3 THEN "${PYTHON3_LIBRARIES}" ELSE NO) endif() status(" numpy:" PYTHON3_NUMPY_INCLUDE_DIRS THEN "${PYTHON3_NUMPY_INCLUDE_DIRS} (ver ${PYTHON3_NUMPY_VERSION})" ELSE "NO (Python3 wrappers can not be generated)") - status(" packages path:" PYTHON3_EXECUTABLE THEN "${PYTHON3_PACKAGES_PATH}" ELSE "-") + status(" install path:" HAVE_opencv_python3 THEN "${__INSTALL_PATH_PYTHON3}" ELSE "-") endif() status("") diff --git a/modules/python/common.cmake b/modules/python/common.cmake index 14912297ea..4b4eaa6e7f 100644 --- a/modules/python/common.cmake +++ b/modules/python/common.cmake @@ -122,6 +122,8 @@ endif() if(NOT " ${PYTHON}" STREQUAL " PYTHON" AND DEFINED OPENCV_${PYTHON}_INSTALL_PATH) set(__python_binary_install_path "${OPENCV_${PYTHON}_INSTALL_PATH}") +elseif(OPENCV_SKIP_PYTHON_LOADER AND DEFINED ${PYTHON}_PACKAGES_PATH) + set(__python_binary_install_path "${${PYTHON}_PACKAGES_PATH}") else() ocv_assert(DEFINED OPENCV_PYTHON_INSTALL_PATH) set(__python_binary_install_path "${OPENCV_PYTHON_INSTALL_PATH}/${__python_loader_subdir}python-${${PYTHON}_VERSION_MAJOR}.${${PYTHON}_VERSION_MINOR}") @@ -134,6 +136,8 @@ install(TARGETS ${the_module} ${PYTHON_INSTALL_ARCHIVE} ) +set(__INSTALL_PATH_${PYTHON} "${__python_binary_install_path}" CACHE INTERNAL "") # CMake status + if(NOT OPENCV_SKIP_PYTHON_LOADER) ocv_assert(DEFINED OPENCV_PYTHON_INSTALL_PATH) if(OpenCV_FOUND) @@ -143,12 +147,11 @@ if(NOT OPENCV_SKIP_PYTHON_LOADER) endif() set(__python_loader_install_tmp_path "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/install/python_loader/") + set(OpenCV_PYTHON_LOADER_FULL_INSTALL_PATH "${CMAKE_INSTALL_PREFIX}/${OPENCV_PYTHON_INSTALL_PATH}/cv2") if(IS_ABSOLUTE "${OPENCV_PYTHON_INSTALL_PATH}") - set(OpenCV_PYTHON_INSTALL_PATH_RELATIVE_CONFIGCMAKE "${CMAKE_INSTALL_PREFIX}/") - set(CMAKE_PYTHON_EXTENSION_INSTALL_PATH_BASE "'${CMAKE_INSTALL_PREFIX}'") + set(CMAKE_PYTHON_EXTENSION_INSTALL_PATH_BASE "'${OPENCV_PYTHON_INSTALL_PATH}/cv2'") else() - file(RELATIVE_PATH OpenCV_PYTHON_INSTALL_PATH_RELATIVE_CONFIGCMAKE "${CMAKE_INSTALL_PREFIX}/${OPENCV_PYTHON_INSTALL_PATH}/cv2" ${CMAKE_INSTALL_PREFIX}) - set(CMAKE_PYTHON_EXTENSION_INSTALL_PATH_BASE "os.path.join(LOADER_DIR, '${OpenCV_PYTHON_INSTALL_PATH_RELATIVE_CONFIGCMAKE}')") + set(CMAKE_PYTHON_EXTENSION_INSTALL_PATH_BASE "LOADER_DIR") endif() if(DEFINED ${PYTHON}_VERSION_MINOR) @@ -167,7 +170,8 @@ if(NOT OPENCV_SKIP_PYTHON_LOADER) if(IS_ABSOLUTE __python_binary_install_path) set(CMAKE_PYTHON_EXTENSION_PATH "'${__python_binary_install_path}'") else() - set(CMAKE_PYTHON_EXTENSION_PATH "os.path.join(${CMAKE_PYTHON_EXTENSION_INSTALL_PATH_BASE}, '${__python_binary_install_path}')") + file(RELATIVE_PATH OpenCV_PYTHON_BINARY_RELATIVE_INSTALL_PATH "${OpenCV_PYTHON_LOADER_FULL_INSTALL_PATH}" "${CMAKE_INSTALL_PREFIX}/${__python_binary_install_path}") + set(CMAKE_PYTHON_EXTENSION_PATH "os.path.join(${CMAKE_PYTHON_EXTENSION_INSTALL_PATH_BASE}, '${OpenCV_PYTHON_BINARY_RELATIVE_INSTALL_PATH}')") endif() configure_file("${PYTHON_SOURCE_DIR}/package/template/config-x.y.py.in" "${__python_loader_install_tmp_path}/cv2/${__target_config}" @ONLY) install(FILES "${__python_loader_install_tmp_path}/cv2/${__target_config}" DESTINATION "${OPENCV_PYTHON_INSTALL_PATH}/cv2/" COMPONENT python) From 3c49b1dbbef02af6058233408775e310766e769a Mon Sep 17 00:00:00 2001 From: Alexander Alekhin Date: Sat, 24 Nov 2018 15:22:54 +0000 Subject: [PATCH 09/14] core: use dladdr() instead of parsing /proc/self/maps --- modules/core/src/utils/datafile.cpp | 25 +++++-------------------- 1 file changed, 5 insertions(+), 20 deletions(-) diff --git a/modules/core/src/utils/datafile.cpp b/modules/core/src/utils/datafile.cpp index 4973a55422..09b412f09d 100644 --- a/modules/core/src/utils/datafile.cpp +++ b/modules/core/src/utils/datafile.cpp @@ -24,6 +24,8 @@ #undef min #undef max #undef abs +#elif defined(__linux__) +#include // requires -ldl #elif defined(__APPLE__) #include #if TARGET_OS_MAC @@ -123,27 +125,10 @@ static cv::String getModuleLocation(const void* addr) } } #elif defined(__linux__) - std::ifstream fs("/proc/self/maps"); - std::string line; - while (std::getline(fs, line, '\n')) + Dl_info info; + if (0 != dladdr(addr, &info)) { - long long int addr_begin = 0, addr_end = 0; - if (2 == sscanf(line.c_str(), "%llx-%llx", &addr_begin, &addr_end)) - { - if ((intptr_t)addr >= (intptr_t)addr_begin && (intptr_t)addr < (intptr_t)addr_end) - { - size_t pos = line.rfind(" "); // 2 spaces - if (pos == cv::String::npos) - pos = line.rfind(' '); // 1 spaces - else - pos++; - if (pos == cv::String::npos) - { - CV_LOG_DEBUG(NULL, "Can't parse module path: '" << line << '\''); - } - return line.substr(pos + 1); - } - } + return cv::String(info.dli_fname); } #elif defined(__APPLE__) # if TARGET_OS_MAC From 9fd822f97e315cb265f3f7bea7b84db38ef941d3 Mon Sep 17 00:00:00 2001 From: Alexander Alekhin Date: Sat, 24 Nov 2018 15:36:43 +0000 Subject: [PATCH 10/14] ocl: fix kernels launching with USE_HOST_PTR UMat created from RAW memory buffers (without proper lifetime management) --- modules/core/src/ocl.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/core/src/ocl.cpp b/modules/core/src/ocl.cpp index 6d66e702ff..0bf4e07856 100644 --- a/modules/core/src/ocl.cpp +++ b/modules/core/src/ocl.cpp @@ -2777,6 +2777,7 @@ struct Kernel::Impl for( int i = 0; i < MAX_ARRS; i++ ) u[i] = 0; haveTempDstUMats = false; + haveTempSrcUMats = false; } void cleanupUMats() @@ -2793,6 +2794,7 @@ struct Kernel::Impl } nu = 0; haveTempDstUMats = false; + haveTempSrcUMats = false; } void addUMat(const UMat& m, bool dst) @@ -2803,6 +2805,8 @@ struct Kernel::Impl nu++; if(dst && m.u->tempUMat()) haveTempDstUMats = true; + if(m.u->originalUMatData == NULL && m.u->tempUMat()) + haveTempSrcUMats = true; // UMat is created on RAW memory (without proper lifetime management, even from Mat) } void addImage(const Image2D& image) @@ -2840,6 +2844,7 @@ struct Kernel::Impl int nu; std::list images; bool haveTempDstUMats; + bool haveTempSrcUMats; }; }} // namespace cv::ocl @@ -3113,6 +3118,8 @@ bool Kernel::Impl::run(int dims, size_t globalsize[], size_t localsize[], cl_command_queue qq = getQueue(q); if (haveTempDstUMats) sync = true; + if (haveTempSrcUMats) + sync = true; if (timeNS) sync = true; cl_event asyncEvent = 0; From 5ff76088b98e8b1db12fdb9c5a6c5795e3a5faa5 Mon Sep 17 00:00:00 2001 From: 1over Date: Sun, 25 Nov 2018 01:31:54 +0100 Subject: [PATCH 11/14] fixed memory issue in flann --- modules/flann/include/opencv2/flann/dist.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/flann/include/opencv2/flann/dist.h b/modules/flann/include/opencv2/flann/dist.h index eedaefff9c..a65e712aed 100644 --- a/modules/flann/include/opencv2/flann/dist.h +++ b/modules/flann/include/opencv2/flann/dist.h @@ -462,10 +462,9 @@ struct Hamming } } #else // NO NEON and NOT GNUC - typedef unsigned long long pop_t; HammingLUT lut; result = lut(reinterpret_cast (a), - reinterpret_cast (b), size * sizeof(pop_t)); + reinterpret_cast (b), size); #endif return result; } From 26cb154f4011294d22b0f163e0373cab7cb15f26 Mon Sep 17 00:00:00 2001 From: Maksim Shabunin Date: Mon, 26 Nov 2018 11:30:20 +0300 Subject: [PATCH 12/14] Fixed NEON detection in Carotene build --- 3rdparty/carotene/hal/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3rdparty/carotene/hal/CMakeLists.txt b/3rdparty/carotene/hal/CMakeLists.txt index 819954de13..e382f037e8 100644 --- a/3rdparty/carotene/hal/CMakeLists.txt +++ b/3rdparty/carotene/hal/CMakeLists.txt @@ -53,7 +53,7 @@ endif() set(CAROTENE_NS "carotene_o4t" CACHE STRING "" FORCE) function(compile_carotene) - if(ENABLE_NEON) + if(";${CPU_BASELINE_FINAL};" MATCHES ";NEON;") set(WITH_NEON ON) endif() From 84ce2cc21179d9dbe633cec2da16598062787a59 Mon Sep 17 00:00:00 2001 From: Dmitry Kurtaev Date: Mon, 26 Nov 2018 12:09:50 +0300 Subject: [PATCH 13/14] Enable some dnn tests according to the new Intel's Inference Engine release (R4) --- modules/dnn/src/layers/elementwise_layers.cpp | 22 +++++++++----- modules/dnn/test/test_backends.cpp | 29 ++++++++++++------- modules/dnn/test/test_darknet_importer.cpp | 4 ++- modules/dnn/test/test_halide_layers.cpp | 4 ++- modules/dnn/test/test_layers.cpp | 15 +++++----- 5 files changed, 46 insertions(+), 28 deletions(-) diff --git a/modules/dnn/src/layers/elementwise_layers.cpp b/modules/dnn/src/layers/elementwise_layers.cpp index 16874ff24e..dea7c6c0d6 100644 --- a/modules/dnn/src/layers/elementwise_layers.cpp +++ b/modules/dnn/src/layers/elementwise_layers.cpp @@ -700,7 +700,8 @@ struct AbsValFunctor bool supportBackend(int backendId, int) { - return backendId == DNN_BACKEND_OPENCV || backendId == DNN_BACKEND_HALIDE; + return backendId == DNN_BACKEND_OPENCV || backendId == DNN_BACKEND_HALIDE || + backendId == DNN_BACKEND_INFERENCE_ENGINE; } void apply(const float* srcptr, float* dstptr, int len, size_t planeSize, int cn0, int cn1) const @@ -754,8 +755,11 @@ struct AbsValFunctor #ifdef HAVE_INF_ENGINE InferenceEngine::CNNLayerPtr initInfEngine(InferenceEngine::LayerParams& lp) { - CV_Error(Error::StsNotImplemented, "Abs"); - return InferenceEngine::CNNLayerPtr(); + lp.type = "ReLU"; + std::shared_ptr ieLayer(new InferenceEngine::ReLULayer(lp)); + ieLayer->negative_slope = -1; + ieLayer->params["negative_slope"] = "-1.0"; + return ieLayer; } #endif // HAVE_INF_ENGINE @@ -832,7 +836,7 @@ struct PowerFunctor bool supportBackend(int backendId, int targetId) { if (backendId == DNN_BACKEND_INFERENCE_ENGINE) - return (targetId != DNN_TARGET_OPENCL && targetId != DNN_TARGET_OPENCL_FP16) || power == 1.0; + return (targetId != DNN_TARGET_OPENCL && targetId != DNN_TARGET_OPENCL_FP16) || power == 1.0 || power == 0.5; else return backendId == DNN_BACKEND_OPENCV || backendId == DNN_BACKEND_HALIDE; } @@ -978,7 +982,8 @@ struct ChannelsPReLUFunctor bool supportBackend(int backendId, int) { - return backendId == DNN_BACKEND_OPENCV || backendId == DNN_BACKEND_HALIDE; + return backendId == DNN_BACKEND_OPENCV || backendId == DNN_BACKEND_HALIDE || + backendId == DNN_BACKEND_INFERENCE_ENGINE; } void apply(const float* srcptr, float* dstptr, int len, size_t planeSize, int cn0, int cn1) const @@ -1064,8 +1069,11 @@ struct ChannelsPReLUFunctor #ifdef HAVE_INF_ENGINE InferenceEngine::CNNLayerPtr initInfEngine(InferenceEngine::LayerParams& lp) { - CV_Error(Error::StsNotImplemented, "PReLU"); - return InferenceEngine::CNNLayerPtr(); + lp.type = "PReLU"; + std::shared_ptr ieLayer(new InferenceEngine::PReLULayer(lp)); + const size_t numChannels = scale.total(); + ieLayer->_weights = wrapToInfEngineBlob(scale, {numChannels}, InferenceEngine::Layout::C); + return ieLayer; } #endif // HAVE_INF_ENGINE diff --git a/modules/dnn/test/test_backends.cpp b/modules/dnn/test/test_backends.cpp index a18b25e71a..a1216a5c45 100644 --- a/modules/dnn/test/test_backends.cpp +++ b/modules/dnn/test/test_backends.cpp @@ -128,10 +128,16 @@ TEST_P(DNNTestNetwork, GoogLeNet) TEST_P(DNNTestNetwork, Inception_5h) { - if (backend == DNN_BACKEND_INFERENCE_ENGINE) throw SkipTestException(""); + double l1 = default_l1, lInf = default_lInf; + if (backend == DNN_BACKEND_INFERENCE_ENGINE && (target == DNN_TARGET_CPU || target == DNN_TARGET_OPENCL)) + { + l1 = 1.72e-5; + lInf = 8e-4; + } processNet("dnn/tensorflow_inception_graph.pb", "", Size(224, 224), "softmax2", target == DNN_TARGET_OPENCL ? "dnn/halide_scheduler_opencl_inception_5h.yml" : - "dnn/halide_scheduler_inception_5h.yml"); + "dnn/halide_scheduler_inception_5h.yml", + l1, lInf); } TEST_P(DNNTestNetwork, ENet) @@ -193,8 +199,7 @@ TEST_P(DNNTestNetwork, SSD_VGG16) TEST_P(DNNTestNetwork, OpenPose_pose_coco) { - if (backend == DNN_BACKEND_HALIDE || - (backend == DNN_BACKEND_INFERENCE_ENGINE && target == DNN_TARGET_MYRIAD)) + if (backend == DNN_BACKEND_HALIDE) throw SkipTestException(""); processNet("dnn/openpose_pose_coco.caffemodel", "dnn/openpose_pose_coco.prototxt", Size(46, 46)); @@ -202,8 +207,7 @@ TEST_P(DNNTestNetwork, OpenPose_pose_coco) TEST_P(DNNTestNetwork, OpenPose_pose_mpi) { - if (backend == DNN_BACKEND_HALIDE || - (backend == DNN_BACKEND_INFERENCE_ENGINE && target == DNN_TARGET_MYRIAD)) + if (backend == DNN_BACKEND_HALIDE) throw SkipTestException(""); processNet("dnn/openpose_pose_mpi.caffemodel", "dnn/openpose_pose_mpi.prototxt", Size(46, 46)); @@ -211,8 +215,7 @@ TEST_P(DNNTestNetwork, OpenPose_pose_mpi) TEST_P(DNNTestNetwork, OpenPose_pose_mpi_faster_4_stages) { - if (backend == DNN_BACKEND_HALIDE || - (backend == DNN_BACKEND_INFERENCE_ENGINE && target == DNN_TARGET_MYRIAD)) + if (backend == DNN_BACKEND_HALIDE) throw SkipTestException(""); // The same .caffemodel but modified .prototxt // See https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/src/openpose/pose/poseParameters.cpp @@ -222,12 +225,16 @@ TEST_P(DNNTestNetwork, OpenPose_pose_mpi_faster_4_stages) TEST_P(DNNTestNetwork, OpenFace) { -#if defined(INF_ENGINE_RELEASE) && INF_ENGINE_RELEASE < 2018030000 +#if defined(INF_ENGINE_RELEASE) +#if INF_ENGINE_RELEASE < 2018030000 if (backend == DNN_BACKEND_INFERENCE_ENGINE && target == DNN_TARGET_MYRIAD) throw SkipTestException("Test is enabled starts from OpenVINO 2018R3"); +#elif INF_ENGINE_RELEASE < 2018040000 + if (backend == DNN_BACKEND_INFERENCE_ENGINE && target == DNN_TARGET_OPENCL_FP16) + throw SkipTestException("Test is enabled starts from OpenVINO 2018R4"); #endif - if (backend == DNN_BACKEND_HALIDE || - (backend == DNN_BACKEND_INFERENCE_ENGINE && target == DNN_TARGET_OPENCL_FP16)) +#endif + if (backend == DNN_BACKEND_HALIDE) throw SkipTestException(""); processNet("dnn/openface_nn4.small2.v1.t7", "", Size(96, 96), ""); } diff --git a/modules/dnn/test/test_darknet_importer.cpp b/modules/dnn/test/test_darknet_importer.cpp index 415e7780fc..d7c14f2714 100644 --- a/modules/dnn/test/test_darknet_importer.cpp +++ b/modules/dnn/test/test_darknet_importer.cpp @@ -347,8 +347,10 @@ INSTANTIATE_TEST_CASE_P(/**/, Test_Darknet_nets, dnnBackendsAndTargets()); TEST_P(Test_Darknet_layers, shortcut) { +#if defined(INF_ENGINE_RELEASE) && INF_ENGINE_RELEASE < 2018040000 if (backend == DNN_BACKEND_INFERENCE_ENGINE && target == DNN_TARGET_CPU) - throw SkipTestException(""); + throw SkipTestException("Test is enabled starts from OpenVINO 2018R4"); +#endif testDarknetLayer("shortcut"); } diff --git a/modules/dnn/test/test_halide_layers.cpp b/modules/dnn/test/test_halide_layers.cpp index 082cf62314..ea5eafd71b 100644 --- a/modules/dnn/test/test_halide_layers.cpp +++ b/modules/dnn/test/test_halide_layers.cpp @@ -273,9 +273,11 @@ TEST_P(AvePooling, Accuracy) Size stride = get<3>(GetParam()); Backend backendId = get<0>(get<4>(GetParam())); Target targetId = get<1>(get<4>(GetParam())); +#if defined(INF_ENGINE_RELEASE) && INF_ENGINE_RELEASE < 2018040000 if (backendId == DNN_BACKEND_INFERENCE_ENGINE && targetId == DNN_TARGET_MYRIAD && stride == Size(3, 2) && kernel == Size(3, 3) && outSize != Size(1, 1)) - throw SkipTestException(""); + throw SkipTestException("Test is enabled starts from OpenVINO 2018R4"); +#endif const int inWidth = (outSize.width - 1) * stride.width + kernel.width; const int inHeight = (outSize.height - 1) * stride.height + kernel.height; diff --git a/modules/dnn/test/test_layers.cpp b/modules/dnn/test/test_layers.cpp index 2b2148573b..1d41daa025 100644 --- a/modules/dnn/test/test_layers.cpp +++ b/modules/dnn/test/test_layers.cpp @@ -243,9 +243,14 @@ TEST_P(Test_Caffe_layers, Concat) TEST_P(Test_Caffe_layers, Fused_Concat) { - if ((backend == DNN_BACKEND_INFERENCE_ENGINE && target == DNN_TARGET_CPU) || - (backend == DNN_BACKEND_INFERENCE_ENGINE && target == DNN_TARGET_OPENCL)) +#if defined(INF_ENGINE_RELEASE) + if (backend == DNN_BACKEND_INFERENCE_ENGINE) + { + if (target == DNN_TARGET_OPENCL || target == DNN_TARGET_OPENCL_FP16 || + (INF_ENGINE_RELEASE < 2018040000 && target == DNN_TARGET_CPU)) throw SkipTestException(""); + } +#endif checkBackend(); // Test case @@ -349,12 +354,6 @@ TEST_P(Test_Caffe_layers, Reshape_Split_Slice) TEST_P(Test_Caffe_layers, Conv_Elu) { - if (backend == DNN_BACKEND_INFERENCE_ENGINE && target == DNN_TARGET_MYRIAD) - { - if (!checkIETarget(DNN_TARGET_MYRIAD)) - throw SkipTestException("Myriad is not available/disabled in OpenCV"); - } - Net net = readNetFromTensorflow(_tf("layer_elu_model.pb")); ASSERT_FALSE(net.empty()); From 24acd5fb83513826444f91110b15c4760d4f09e9 Mon Sep 17 00:00:00 2001 From: Matthias Winkelmann Date: Mon, 26 Nov 2018 13:04:16 +0100 Subject: [PATCH 14/14] Merge pull request #13228 from MatthiasWinkelmann:master Add URLs, harmonise formatting, and fix parse error in bibliography (#13228) * Fixed parse error in bibliography * Removed extra curly braces * harmonized whitespace * changed organisation -> publisher where appropriate. Organisation is intended as the author's organisation, not the publishing. * harmonized capitalisation and whitespace * Add links to about 1/3 of references --- doc/opencv.bib | 670 +++++++++++++++++++++++++------------------------ 1 file changed, 338 insertions(+), 332 deletions(-) diff --git a/doc/opencv.bib b/doc/opencv.bib index de18a4e586..4ed9b572ac 100644 --- a/doc/opencv.bib +++ b/doc/opencv.bib @@ -1,41 +1,38 @@ -@comment{Bib-it, - This file was created by Bib-it 1.4 - 97 entries written -} - -@INCOLLECTION{ABD12, +@incollection{ABD12, author = {Alcantarilla, Pablo Fern{\'a}ndez and Bartoli, Adrien and Davison, Andrew J}, title = {KAZE features}, booktitle = {Computer Vision--ECCV 2012}, year = {2012}, pages = {214--227}, - publisher = {Springer} + publisher = {Springer}, + url = {https://www.doc.ic.ac.uk/~ajd/Publications/alcantarilla_etal_eccv2012.pdf} } -@ARTICLE{ANB13, +@article{ANB13, author = {Alcantarilla, Pablo F and Nuevo, Jes{\'u}s and Bartoli, Adrien}, title = {Fast Explicit Diffusion for Accelerated Features in Nonlinear Scale Spaces}, year = {2011}, pages = {1281--1298}, journal = {Trans. Pattern Anal. Machine Intell}, volume = {34}, - number = {7} + number = {7}, + url = {http://www.bmva.org/bmvc/2013/Papers/paper0013/paper0013.pdf} } -@INPROCEEDINGS{Arandjelovic:2012:TTE:2354409.2355123, - author = {Arandjelovic, Relja}, - title = {Three Things Everyone Should Know to Improve Object Retrieval}, - booktitle = {Proceedings of the 2012 IEEE Conference on Computer Vision and Pattern Recognition (CVPR)}, - series = {CVPR '12}, - year = {2012}, - isbn = {978-1-4673-1226-4}, - pages = {2911--2918}, - numpages = {8}, - url = {http://dl.acm.org/citation.cfm?id=2354409.2355123}, - acmid = {2355123}, - publisher = {IEEE Computer Society}, - address = {Washington, DC, USA}, - keywords = {Vectors,Visualization,Kernel,Standards,Support vector machines,Indexes,Euclidean distance}, +@inproceedings{Arandjelovic:2012:TTE:2354409.2355123, + author = {Arandjelovic, Relja}, + title = {Three Things Everyone Should Know to Improve Object Retrieval}, + booktitle = {Proceedings of the 2012 IEEE Conference on Computer Vision and Pattern Recognition (CVPR)}, + series = {CVPR '12}, + year = {2012}, + isbn = {978-1-4673-1226-4}, + pages = {2911--2918}, + numpages = {8}, + url = {http://dl.acm.org/citation.cfm?id=2354409.2355123}, + acmid = {2355123}, + publisher = {IEEE Computer Society}, + address = {Washington, DC, USA}, + keywords = {Vectors,Visualization,Kernel,Standards,Support vector machines,Indexes,Euclidean distance} } -@ARTICLE{BA83, +@article{BA83, author = {Burt, Peter J and Adelson, Edward H}, title = {A multiresolution spline with application to image mosaics}, year = {1983}, @@ -43,9 +40,10 @@ journal = {ACM Transactions on Graphics (TOG)}, volume = {2}, number = {4}, - publisher = {ACM} + publisher = {ACM}, + url = {http://persci.mit.edu/pub_pdfs/spline83.pdf} } -@ARTICLE{BL07, +@article{BL07, author = {Brown, Matthew and Lowe, David G}, title = {Automatic panoramic image stitching using invariant features}, year = {2007}, @@ -53,9 +51,10 @@ journal = {International journal of computer vision}, volume = {74}, number = {1}, - publisher = {Springer} + publisher = {Springer}, + url = {http://matthewalunbrown.com/papers/ijcv2007.pdf} } -@ARTICLE{BT96, +@article{BT96, author = {Birchfield, Stan and Tomasi, Carlo}, title = {Depth discontinuities by pixel-to-pixel stereo}, year = {1999}, @@ -63,9 +62,10 @@ journal = {International Journal of Computer Vision}, volume = {35}, number = {3}, - publisher = {Springer} + publisher = {Springer}, + url = {https://users.cs.duke.edu/~tomasi/papers/tomasi/tomasiIjcv99.pdf} } -@ARTICLE{BT98, +@article{BT98, author = {Birchfield, Stan and Tomasi, Carlo}, title = {A pixel dissimilarity measure that is insensitive to image sampling}, year = {1998}, @@ -73,9 +73,10 @@ journal = {Pattern Analysis and Machine Intelligence, IEEE Transactions on}, volume = {20}, number = {4}, - publisher = {IEEE} + publisher = {IEEE}, + url = {http://robotics.stanford.edu/~birch/publications/dissimilarity_pami1998.pdf} } -@ARTICLE{Ballard1981, +@article{Ballard1981, author = {Ballard, Dana H}, title = {Generalizing the Hough transform to detect arbitrary shapes}, year = {1981}, @@ -83,9 +84,10 @@ journal = {Pattern recognition}, volume = {13}, number = {2}, - publisher = {Elsevier} + publisher = {Elsevier}, + url = {https://www.cs.bgu.ac.il/~icbv161/wiki.files/Readings/1981-Ballard-Generalizing_the_Hough_Transform_to_Detect_Arbitrary_Shapes.pdf} } -@ARTICLE{Borgefors86, +@article{Borgefors86, author = {Borgefors, Gunilla}, title = {Distance transformations in digital images}, year = {1986}, @@ -95,47 +97,51 @@ number = {3}, publisher = {Elsevier} } -@ARTICLE{Bouguet00, +@article{Bouguet00, author = {Bouguet, Jean-Yves}, title = {Pyramidal implementation of the affine lucas kanade feature tracker description of the algorithm}, year = {2001}, journal = {Intel Corporation}, - volume = {5} + volume = {5}, + url = {https://pdfs.semanticscholar.org/aa97/2b40c0f8e20b07e02d1fd320bc7ebadfdfc7.pdf} } -@MISC{BouguetMCT, +@misc{BouguetMCT, author = {Bouguet, Jean-Yves}, title = {Camera Calibration Tool box for Matlab [EB/OL]}, year = {2004} } -@INPROCEEDINGS{Bradski00, +@inproceedings{Bradski00, author = {Bradski, GR and Davis, J}, title = {Motion segmentation and pose recognition with motion history gradients}, booktitle = {Applications of Computer Vision, 2000, Fifth IEEE Workshop on.}, year = {2000}, pages = {238--244}, - organization = {IEEE} + publisher = {IEEE}, + url = {http://web.cse.ohio-state.edu/~davis.1719/Publications/mva02.pdf} } -@ARTICLE{Bradski98, +@article{Bradski98, author = {Bradski, Gary R}, title = {Computer vision face tracking for use in a perceptual user interface}, year = {1998}, publisher = {Citeseer} } @book{Breiman84, - title={Classification and regression trees}, - author={Breiman, Leo and Friedman, Jerome and Stone, Charles J and Olshen, Richard A}, - year={1984}, - publisher={CRC press} + title = {Classification and regression trees}, + author = {Breiman, Leo and Friedman, Jerome and Stone, Charles J and Olshen, Richard A}, + year = {1984}, + publisher = {CRC press}, + url = {https://projecteuclid.org/download/pdf_1/euclid.aos/1016218223} } -@INCOLLECTION{Brox2004, +@incollection{Brox2004, author = {Brox, Thomas and Bruhn, Andres and Papenberg, Nils and Weickert, Joachim}, title = {High accuracy optical flow estimation based on a theory for warping}, booktitle = {Computer Vision-ECCV 2004}, year = {2004}, pages = {25--36}, - publisher = {Springer} + publisher = {Springer}, + url = {http://www.cs.auckland.ac.nz/~rklette/TeachAuckland.html/CIMAT/02a%20BBPW-ECCV04.pdf} } -@ARTICLE{Burges98, +@article{Burges98, author = {Burges, Christopher JC}, title = {A tutorial on support vector machines for pattern recognition}, year = {1998}, @@ -143,26 +149,29 @@ journal = {Data mining and knowledge discovery}, volume = {2}, number = {2}, - publisher = {Springer} + publisher = {Springer}, + url = {http://www.cmlab.csie.ntu.edu.tw/~cyy/learning/papers/SVM_Tutorial.pdf} } -@INPROCEEDINGS{CL12, +@inproceedings{CL12, author = {Lu, Cewu and Xu, Li and Jia, Jiaya}, title = {Contrast preserving decolorization}, booktitle = {Computational Photography (ICCP), 2012 IEEE International Conference on}, year = {2012}, pages = {1--7}, - organization = {IEEE} + publisher = {IEEE}, + url = {https://www.computer.org/csdl/proceedings/iccp/2012/1662/00/06215215.pdf} } -@ARTICLE{Canny86, +@article{Canny86, author = {Canny, John}, title = {A computational approach to edge detection}, year = {1986}, pages = {679--698}, journal = {Pattern Analysis and Machine Intelligence, IEEE Transactions on}, number = {6}, - publisher = {IEEE} + publisher = {IEEE}, + url = {http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.420.3300&rep=rep1&type=pdf} } -@ARTICLE{ChambolleEtAl, +@article{ChambolleEtAl, author = {Chambolle, Antonin and Caselles, Vicent and Cremers, Daniel and Novaga, Matteo and Pock, Thomas}, title = {An introduction to total variation for image analysis}, year = {2010}, @@ -171,7 +180,7 @@ volume = {9}, publisher = {Walter de Gruyter} } -@INPROCEEDINGS{DD02, +@inproceedings{DD02, author = {Durand, Fr{\'e}do and Dorsey, Julie}, title = {Fast bilateral filtering for the display of high-dynamic-range images}, booktitle = {ACM Transactions on Graphics (TOG)}, @@ -179,9 +188,10 @@ pages = {257--266}, volume = {21}, number = {3}, - organization = {ACM} + publisher = {ACM}, + url = {https://www.researchgate.net/profile/Julie_Dorsey/publication/220184746_Fast_Bilateral_Filtering_for_the_Display_of_High_-_dynamic_-_range_Images/links/54566b000cf26d5090a95f96/Fast-Bilateral-Filtering-for-the-Display-of-High-dynamic-range-Images.pdf} } -@INPROCEEDINGS{DM03, +@inproceedings{DM03, author = {Drago, Fr{\'e}d{\'e}ric and Myszkowski, Karol and Annen, Thomas and Chiba, Norishige}, title = {Adaptive logarithmic mapping for displaying high contrast scenes}, booktitle = {Computer Graphics Forum}, @@ -189,34 +199,38 @@ pages = {419--426}, volume = {22}, number = {3}, - organization = {Wiley Online Library} + publisher = {Wiley}, + url = {http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.69.8094&rep=rep1&type=pdf} } -@INPROCEEDINGS{DM97, +@inproceedings{DM97, author = {Debevec, Paul E and Malik, Jitendra}, title = {Recovering high dynamic range radiance maps from photographs}, booktitle = {ACM SIGGRAPH 2008 classes}, year = {2008}, pages = {31}, - organization = {ACM} + publisher = {ACM}, + url = {http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.463.6496&rep=rep1&type=pdf} } -@INPROCEEDINGS{Dalal2005, +@inproceedings{Dalal2005, author = {Dalal, Navneet and Triggs, Bill}, title = {Histograms of oriented gradients for human detection}, booktitle = {Computer Vision and Pattern Recognition, 2005. CVPR 2005. IEEE Computer Society Conference on}, year = {2005}, pages = {886--893}, volume = {1}, - organization = {IEEE} + publisher = {IEEE}, + url = {https://hal.inria.fr/docs/00/54/85/12/PDF/hog_cvpr2005.pdf} } -@INPROCEEDINGS{Davis97, +@inproceedings{Davis97, author = {Davis, James W and Bobick, Aaron F}, title = {The representation and recognition of human movement using temporal templates}, booktitle = {Computer Vision and Pattern Recognition, 1997. Proceedings., 1997 IEEE Computer Society Conference on}, year = {1997}, pages = {928--934}, - organization = {IEEE} + publisher = {IEEE}, + url = {http://alumni.media.mit.edu/~jdavis/Publications/publications_402.pdf} } -@INPROCEEDINGS{EM11, +@inproceedings{EM11, author = {Gastal, Eduardo SL and Oliveira, Manuel M}, title = {Domain transform for edge-aware image and video processing}, booktitle = {ACM Transactions on Graphics (TOG)}, @@ -224,9 +238,10 @@ pages = {69}, volume = {30}, number = {4}, - organization = {ACM} + publisher = {ACM}, + url = {http://www.inf.ufrgs.br/~eslgastal/DomainTransform/Gastal_Oliveira_SIGGRAPH2011_Domain_Transform.pdf} } -@ARTICLE{EP08, +@article{EP08, author = {Evangelidis, Georgios D and Psarakis, Emmanouil Z}, title = {Parametric image alignment using enhanced correlation coefficient maximization}, year = {2008}, @@ -234,22 +249,25 @@ journal = {Pattern Analysis and Machine Intelligence, IEEE Transactions on}, volume = {30}, number = {10}, - publisher = {IEEE} + publisher = {IEEE}, + url = {https://hal.archives-ouvertes.fr/docs/00/86/43/85/PDF/PAMI_2008_preprint.pdf} } -@INPROCEEDINGS{FGD2003, +@inproceedings{FGD2003, author = {Li, Liyuan and Huang, Weimin and Gu, Irene YH and Tian, Qi}, title = {Foreground object detection from videos containing complex background}, booktitle = {Proceedings of the eleventh ACM international conference on Multimedia}, year = {2003}, pages = {2--10}, - organization = {ACM} + publisher = {ACM}, + url = {https://www.researchgate.net/profile/Liyuan_Li/publication/221571587_Foreground_object_detection_from_videos_containing_complex_background/links/09e4150bdf566d110c000000/Foreground-object-detection-from-videos-containing-complex-background.pdf} } -@ARTICLE{FHT98, +@article{FHT98, author = {Friedman, Jerome and Hastie, Trevor and Tibshirani, Robert}, title = {Additive Logistic Regression: a Statistical View of Boosting}, - year = {1998} + year = {1998}, + url = {https://projecteuclid.org/download/pdf_1/euclid.aos/1016218223} } -@INPROCEEDINGS{FL02, +@inproceedings{FL02, author = {Fattal, Raanan and Lischinski, Dani and Werman, Michael}, title = {Gradient domain high dynamic range compression}, booktitle = {ACM Transactions on Graphics (TOG)}, @@ -257,32 +275,36 @@ pages = {249--256}, volume = {21}, number = {3}, - organization = {ACM} + publisher = {ACM}, + url = {https://www.researchgate.net/profile/Dani_Lischinski/publication/2530899_Gradient_Domain_High_Dynamic_Range_Compression/links/00463524c3f5cd2e34000000/Gradient-Domain-High-Dynamic-Range-Compression.pdf} } -@INCOLLECTION{Farneback2003, +@incollection{Farneback2003, author = {Farneb{\"a}ck, Gunnar}, title = {Two-frame motion estimation based on polynomial expansion}, booktitle = {Image Analysis}, year = {2003}, pages = {363--370}, - publisher = {Springer} + publisher = {Springer}, + url = {https://arxiv.org/pdf/1808.01752} } -@INPROCEEDINGS{Farsiu03, +@inproceedings{Farsiu03, author = {Farsiu, Sina and Robinson, Dirk and Elad, Michael and Milanfar, Peyman}, title = {Fast and robust super-resolution}, booktitle = {Image Processing, 2003. ICIP 2003. Proceedings. 2003 International Conference on}, year = {2003}, pages = {II--291}, volume = {2}, - organization = {IEEE} + publisher = {IEEE}, + url = {http://www.academia.edu/download/42361965/ICIP2003SR.pdf} } -@TECHREPORT{Felzenszwalb04, +@techreport{Felzenszwalb04, author = {Felzenszwalb, Pedro and Huttenlocher, Daniel}, title = {Distance transforms of sampled functions}, year = {2004}, - institution = {Cornell University} + institution = {Cornell University}, + url = {http://www.theoryofcomputing.org/articles/v008a019/v008a019.pdf} } -@ARTICLE{Felzenszwalb10, +@article{Felzenszwalb10, author = {Felzenszwalb, Pedro F and Girshick, Ross B and McAllester, David and Ramanan, Deva}, title = {Object detection with discriminatively trained part-based models}, year = {2010}, @@ -290,9 +312,10 @@ journal = {Pattern Analysis and Machine Intelligence, IEEE Transactions on}, volume = {32}, number = {9}, - publisher = {IEEE} + publisher = {IEEE}, + url = {http://lear.inrialpes.fr/~oneata/reading_group/dpm.pdf} } -@ARTICLE{Felzenszwalb2006, +@article{Felzenszwalb2006, author = {Felzenszwalb, Pedro F and Huttenlocher, Daniel P}, title = {Efficient belief propagation for early vision}, year = {2006}, @@ -300,85 +323,57 @@ journal = {International journal of computer vision}, volume = {70}, number = {1}, - publisher = {Springer} + publisher = {Springer}, + url = {http://www.cs.duke.edu/research/AI/papers/Felzenszwalb06.pdf} } -@INPROCEEDINGS{Fitzgibbon95, +@inproceedings{Fitzgibbon95, author = {Fitzgibbon, Andrew W and Fisher, Robert B}, title = {A buyer's guide to conic fitting}, booktitle = {Proceedings of the 6th British conference on Machine vision (Vol. 2)}, year = {1995}, pages = {513--522}, - organization = {BMVA Press} + publisher = {BMVA Press}, + url = {https://www.researchgate.net/profile/Robert_Fisher5/publication/2237785_A_Buyer's_Guide_to_Conic_Fitting/links/0fcfd50f59aeded518000000/A-Buyers-Guide-to-Conic-Fitting.pdf} } -@ARTICLE{fitzgibbon1999, - abstract = {This work presents a new efficient method for fitting - ellipses to scattered data. Previous algorithms either - fitted general conics or were computationally expensive. By - minimizing the algebraic distance subject to the constraint - 4ac-b2=1, the new method incorporates the - ellipticity constraint into the normalization factor. The - proposed method combines several advantages: It is - ellipse-specific, so that even bad data will always return - an ellipse. It can be solved naturally by a generalized - eigensystem. It is extremely robust, efficient, and easy to - implement}, +@article{fitzgibbon1999, + abstract = {This work presents a new efficient method for fitting ellipses to scattered data. Previous algorithms either fitted general conics or were computationally expensive. By minimizing the algebraic distance subject to the constraint 4ac-b2=1, the new method incorporates the ellipticity constraint into the normalization factor. The proposed method combines several advantages: It is ellipse-specific, so that even bad data will always return an ellipse. It can be solved naturally by a generalized eigensystem. It is extremely robust, efficient, and easy to implement}, author = {Fitzgibbon, Andrew and Pilu, Maurizio and Fisher, Robert B.}, - doi= {10.1109/34.765658}, - isbn= {0162-8828}, - issn= {01628828}, - journal = {IEEE Transactions on Pattern Analysis and Machine - Intelligence}, + doi = {10.1109/34.765658}, + isbn = {0162-8828}, + issn = {01628828}, + journal = {IEEE Transactions on Pattern Analysis and Machine Intelligence}, number = {5}, - pages= {476--480}, - pmid= {708}, - title= {{Direct least square fitting of ellipses}}, + pages = {476--480}, + pmid = {708}, + title = {Direct least square fitting of ellipses}, volume = {21}, - year= {1999} + year = {1999}, + url = {https://pdfs.semanticscholar.org/090d/25f94cb021bdd3400a2f547f989a6a5e07ec.pdf} } -@Article{taubin1991, - abstract = {The author addresses the problem of parametric - representation and estimation of complex planar curves in - 2-D surfaces in 3-D, and nonplanar space curves in 3-D. - Curves and surfaces can be defined either parametrically or - implicitly, with the latter representation used here. A - planar curve is the set of zeros of a smooth function of - two variables x-y, a surface is the set - of zeros of a smooth function of three variables - x-y-z, and a space curve is the - intersection of two surfaces, which are the set of zeros of - two linearly independent smooth functions of three - variables x-y-z For example, the - surface of a complex object in 3-D can be represented as a - subset of a single implicit surface, with similar results - for planar and space curves. It is shown how this unified - representation can be used for object recognition, object - position estimation, and segmentation of objects into - meaningful subobjects, that is, the detection of `interest - regions' that are more complex than high curvature regions - and, hence, more useful as features for object - recognition}, +@article{taubin1991, + abstract = {The author addresses the problem of parametric representation and estimation of complex planar curves in 2-D surfaces in 3-D, and nonplanar space curves in 3-D. Curves and surfaces can be defined either parametrically or implicitly, with the latter representation used here. A planar curve is the set of zeros of a smooth function of two variables x-y, a surface is the set of zeros of a smooth function of three variables x-y-z, and a space curve is the intersection of two surfaces, which are the set of zeros of two linearly independent smooth functions of three variables x-y-z For example, the surface of a complex object in 3-D can be represented as a subset of a single implicit surface, with similar results for planar and space curves. It is shown how this unified representation can be used for object recognition, object position estimation, and segmentation of objects into meaningful subobjects, that is, the detection of `interest regions' that are more complex than high curvature regions and, hence, more useful as features for object recognition}, author = {Taubin, Gabriel}, - doi= {10.1109/34.103273}, - isbn= {0162-8828}, - issn= {01628828}, + doi = {10.1109/34.103273}, + isbn = {0162-8828}, + issn = {01628828}, journal = {IEEE Transactions on Pattern Analysis and Machine Intelligence}, number = {11}, - pages= {1115--1138}, - title= {{Estimation of planar curves, surfaces, and nonplanar - space curves defined by implicit equations with - applications to edge and range image segmentation}}, + pages = {1115--1138}, + title = {Estimation of planar curves, surfaces, and nonplanar space curves defined by implicit equations with applications to edge and range image segmentation}, volume = {13}, - year= {1991} + year = {1991}, + url = {https://pdfs.semanticscholar.org/27a7/90a0ca254006fbe37d41e1751516911607ca.pdf} } -@INPROCEEDINGS{G11, +@inproceedings{G11, author = {Grundmann, Matthias and Kwatra, Vivek and Essa, Irfan}, title = {Auto-directed video stabilization with robust l1 optimal camera paths}, booktitle = {Computer Vision and Pattern Recognition (CVPR), 2011 IEEE Conference on}, year = {2011}, pages = {225--232}, - organization = {IEEE} + publisher = {IEEE}, + url = {https://smartech.gatech.edu/bitstream/handle/1853/44611/2011-Grundmann-AVSWROCP.pdf?sequence=1&isAllowed=y} } -@ARTICLE{GW03, +@article{GW03, author = {Ward, Greg}, title = {Fast, robust image registration for compositing high dynamic range photographs from hand-held exposures}, year = {2003}, @@ -386,17 +381,19 @@ journal = {Journal of graphics tools}, volume = {8}, number = {2}, - publisher = {Taylor \& Francis} + publisher = {Taylor \& Francis}, + url = {http://pages.cs.wisc.edu/~lizhang/courses/cs766-2008f/projects/hdr/jgtpap2.pdf} } -@INPROCEEDINGS{Gold2012, +@inproceedings{Gold2012, author = {Godbehere, Andrew B and Matsukawa, Akihiro and Goldberg, Ken}, title = {Visual tracking of human visitors under variable-lighting conditions for a responsive audio art installation}, booktitle = {American Control Conference (ACC), 2012}, year = {2012}, pages = {4305--4312}, - organization = {IEEE} + publisher = {IEEE}, + url = {http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.228.1735&rep=rep1&type=pdf} } -@ARTICLE{Guil1999, +@article{Guil1999, author = {Guil, N and Gonzalez-Linares, Jos{\'e} Mar{\'\i}a and Zapata, Emilio L}, title = {Bidimensional shape detection using an invariant approach}, year = {1999}, @@ -406,7 +403,7 @@ number = {6}, publisher = {Elsevier} } -@ARTICLE{HH08, +@article{HH08, author = {Hirschmuller, Heiko}, title = {Stereo processing by semiglobal matching and mutual information}, year = {2008}, @@ -414,18 +411,20 @@ journal = {Pattern Analysis and Machine Intelligence, IEEE Transactions on}, volume = {30}, number = {2}, - publisher = {IEEE} + publisher = {IEEE}, + url = {http://www.openrs.org/photogrammetry/2015/SGM%202008%20PAMI%20-%20Stereo%20Processing%20by%20Semiglobal%20Matching%20and%20Mutual%20Informtion.pdf} } -@ARTICLE{HTF01, +@article{HTF01, author = {Trevor, Hastie and Robert, Tibshirani and Jerome, Friedman}, title = {The elements of statistical learning: data mining, inference and prediction}, year = {2001}, pages = {371--406}, journal = {New York: Springer-Verlag}, volume = {1}, - number = {8} + number = {8}, + url = {http://www.stat.auckland.ac.nz/~yee/784/files/ch09AdditiveModelsTrees.pdf} } -@ARTICLE{Hartley99, +@article{Hartley99, author = {Hartley, Richard I}, title = {Theory and practice of projective rectification}, year = {1999}, @@ -433,23 +432,26 @@ journal = {International Journal of Computer Vision}, volume = {35}, number = {2}, - publisher = {Springer} + publisher = {Springer}, + url = {http://www.cs.ait.ac.th/~mdailey/cvreadings/Hartley-Rectify.pdf} } -@BOOK{HartleyZ00, +@book{HartleyZ00, author = {Hartley, Richard and Zisserman, Andrew}, title = {Multiple view geometry in computer vision}, year = {2003}, - publisher = {Cambridge university press} + publisher = {Cambridge university press}, + url = {http://cds.cern.ch/record/1598612/files/0521540518_TOC.pdf} } -@ARTICLE{Horn81, +@article{Horn81, author = {Horn, Berthold KP and Schunck, Brian G}, title = {Determining Optical Flow}, year = {1981}, pages = {185--203}, journal = {Artificial Intelligence}, - volume = {17} + volume = {17}, + url = {https://dspace.mit.edu/bitstream/handle/1721.1/6337/%EE%80%80AIM%EE%80%81-572.pdf?sequence=2} } -@ARTICLE{Hu62, +@article{Hu62, author = {Hu, Ming-Kuei}, title = {Visual pattern recognition by moment invariants}, year = {1962}, @@ -459,12 +461,13 @@ number = {2}, publisher = {IEEE} } -@ARTICLE{Javier2012, +@article{Javier2012, author = {S{\'a}nchez P{\'e}rez, Javier and Meinhardt-Llopis, Enric and Facciolo, Gabriele}, title = {TV-L1 optical flow estimation}, - year = {2012} + year = {2012}, + url = {http://www.ipol.im/pub/art/2013/26/article_lr.pdf} } -@ARTICLE{KleeLaskowski85, +@article{KleeLaskowski85, author = {Klee, Victor and Laskowski, Michael C}, title = {Finding the smallest triangles containing a given convex polygon}, year = {1985}, @@ -474,34 +477,34 @@ number = {3}, publisher = {Elsevier} } -@ARTICLE{Kirkpatrick83, - author = {Kirkpatrick, S. and Gelatt, C. D. Jr and Vecchi, M. P. }, +@article{Kirkpatrick83, + author = {Kirkpatrick, S. and Gelatt, C. D. Jr and Vecchi, M. P.}, title = {Optimization by Simulated Annealing}, year = {1983}, pages = {671--680}, journal = {Science}, volume = {220}, number = {4598}, - publisher = {American Association for the Advancement of Science} + publisher = {American Association for the Advancement of Science}, + url = {http://sci2s.ugr.es/sites/default/files/files/Teaching/GraduatesCourses/Metaheuristicas/Bibliography/1983-Science-Kirkpatrick-sim_anneal.pdf} } - -@INPROCEEDINGS{Kolmogorov03, +@inproceedings{Kolmogorov03, author = {Kim, Junhwan and Kolmogorov, Vladimir and Zabih, Ramin}, title = {Visual correspondence using energy minimization and mutual information}, booktitle = {Computer Vision, 2003. Proceedings. Ninth IEEE International Conference on}, year = {2003}, pages = {1033--1040}, - organization = {IEEE} + publisher = {IEEE} } -@INPROCEEDINGS{LCS11, +@inproceedings{LCS11, author = {Leutenegger, Stefan and Chli, Margarita and Siegwart, Roland Yves}, title = {BRISK: Binary robust invariant scalable keypoints}, booktitle = {Computer Vision (ICCV), 2011 IEEE International Conference on}, year = {2011}, pages = {2548--2555}, - organization = {IEEE} + publisher = {IEEE} } -@ARTICLE{Louhichi07, +@article{Louhichi07, author = {Louhichi, H. and Fournel, T. and Lavest, J. M. and Ben Aissia, H.}, title = {Self-calibration of Scheimpflug cameras: an easy protocol}, year = {2007}, @@ -511,7 +514,7 @@ number = {8}, publisher = {IOP Publishing Ltd} } -@ARTICLE{LibSVM, +@article{LibSVM, author = {Chang, Chih-Chung and Lin, Chih-Jen}, title = {LIBSVM: a library for support vector machines}, year = {2011}, @@ -521,35 +524,36 @@ number = {3}, publisher = {ACM} } -@INPROCEEDINGS{Lienhart02, +@inproceedings{Lienhart02, author = {Lienhart, Rainer and Maydt, Jochen}, title = {An extended set of haar-like features for rapid object detection}, booktitle = {Image Processing. 2002. Proceedings. 2002 International Conference on}, year = {2002}, pages = {I--900}, volume = {1}, - organization = {IEEE} + publisher = {IEEE} } -@ARTICLE{Lowe:2004:DIF:993451.996342, - author = {Lowe, David G.}, - title = {Distinctive Image Features from Scale-Invariant Keypoints}, - journal = {Int. J. Comput. Vision}, - issue_date = {November 2004}, - volume = {60}, - number = {2}, - month = nov, - year = {2004}, - issn = {0920-5691}, - pages = {91--110}, - numpages = {20}, - url = {https://doi.org/10.1023/B:VISI.0000029664.99615.94}, - doi = {10.1023/B:VISI.0000029664.99615.94}, - acmid = {996342}, - publisher = {Kluwer Academic Publishers}, - address = {Hingham, MA, USA}, - keywords = {image matching, invariant features, object recognition, scale invariance}, +@article{Lowe:2004:DIF:993451.996342, + author = {Lowe, David G.}, + title = {Distinctive Image Features from Scale-Invariant Keypoints}, + journal = {Int. J. Comput. Vision}, + issue_date = {November 2004}, + volume = {60}, + number = {2}, + month = nov, + year = {2004}, + issn = {0920-5691}, + pages = {91--110}, + numpages = {20}, + url = {https://doi.org/10.1023/B:VISI.0000029664.99615.94}, + doi = {10.1023/B:VISI.0000029664.99615.94}, + acmid = {996342}, + publisher = {Kluwer Academic Publishers}, + address = {Hingham, MA, USA}, + keywords = {image matching, invariant features, object recognition, scale invariance}, + month_numeric = {11} } -@INPROCEEDINGS{Lucas81, +@inproceedings{Lucas81, author = {Lucas, Bruce D and Kanade, Takeo and others}, title = {An iterative image registration technique with an application to stereo vision.}, booktitle = {IJCAI}, @@ -557,31 +561,31 @@ pages = {674--679}, volume = {81} } -@MISC{MA13, +@misc{MA13, author = {Mordvintsev, Alexander}, title = {ROF and TV-L1 denoising with Primal-Dual algorithm}, url = {http://znah.net/rof-and-tv-l1-denoising-with-primal-dual-algorithm.html} } -@MISC{VandLec, +@misc{VandLec, author = {Vandenberghe, Lieven}, title = {QR Factorization}, url = {http://www.seas.ucla.edu/~vandenbe/133A/lectures/qr.pdf} } -@ARTICLE{MHT2011, +@article{MHT2011, author = {Getreuer, Pascal}, title = {Malvar-He-Cutler Linear Image Demosaicking}, year = {2011}, journal = {Image Processing on Line} } -@INPROCEEDINGS{MK07, +@inproceedings{MK07, author = {Mertens, Tom and Kautz, Jan and Van Reeth, Frank}, title = {Exposure fusion}, booktitle = {Computer Graphics and Applications, 2007. PG'07. 15th Pacific Conference on}, year = {2007}, pages = {382--390}, - organization = {IEEE} + publisher = {IEEE} } -@ARTICLE{MM06, +@article{MM06, author = {Mantiuk, Rafal and Myszkowski, Karol and Seidel, Hans-Peter}, title = {A perceptual framework for contrast processing of high dynamic range images}, year = {2006}, @@ -591,7 +595,7 @@ number = {3}, publisher = {ACM} } -@INCOLLECTION{MOG2001, +@incollection{MOG2001, author = {KaewTraKulPong, Pakorn and Bowden, Richard}, title = {An improved adaptive background mixture model for real-time tracking with shadow detection}, booktitle = {Video-Based Surveillance Systems}, @@ -600,18 +604,18 @@ publisher = {Springer} } @book{Ma:2003:IVI, - author = {Ma, Yi and Soatto, Stefano and Kosecka, Jana and Sastry, S. Shankar}, - title = {An Invitation to 3-D Vision: From Images to Geometric Models}, - year = {2003}, - isbn = {0387008934}, - publisher = {SpringerVerlag}, + author = {Ma, Yi and Soatto, Stefano and Kosecka, Jana and Sastry, S. Shankar}, + title = {An Invitation to 3-D Vision: From Images to Geometric Models}, + year = {2003}, + isbn = {0387008934}, + publisher = {Springer} } -@ARTICLE{Malis, +@article{Malis, author = {Malis, Ezio and Vargas, Manuel and others}, title = {Deeper understanding of the homography decomposition for vision-based control}, year = {2007} } -@ARTICLE{Matas00, +@article{Matas00, author = {Matas, Jiri and Galambos, Charles and Kittler, Josef}, title = {Robust detection of lines using the progressive probabilistic hough transform}, year = {2000}, @@ -621,15 +625,15 @@ number = {1}, publisher = {Elsevier} } -@INPROCEEDINGS{Meyer92, +@inproceedings{Meyer92, author = {Meyer, Fernand}, title = {Color image segmentation}, booktitle = {Image Processing and its Applications, 1992., International Conference on}, year = {1992}, pages = {303--306}, - organization = {IET} + publisher = {IET} } -@INCOLLECTION{Mitzel09, +@incollection{Mitzel09, author = {Mitzel, Dennis and Pock, Thomas and Schoenemann, Thomas and Cremers, Daniel}, title = {Video super resolution using duality based tv-l 1 optical flow}, booktitle = {Pattern Recognition}, @@ -637,14 +641,14 @@ pages = {432--441}, publisher = {Springer} } -@INPROCEEDINGS{Muja2009, +@inproceedings{Muja2009, author = {Muja, Marius and Lowe, David G}, title = {Fast Approximate Nearest Neighbors with Automatic Algorithm Configuration}, booktitle = {VISAPP (1)}, year = {2009}, pages = {331--340} } -@ARTICLE{Nister03, +@article{Nister03, author = {Nist{\'e}r, David}, title = {An efficient solution to the five-point relative pose problem}, year = {2004}, @@ -654,7 +658,7 @@ number = {6}, publisher = {IEEE} } -@ARTICLE{OF06, +@article{OF06, author = {Matsushita, Yasuyuki and Ofek, Eyal and Ge, Weina and Tang, Xiaoou and Shum, Heung-Yeung}, title = {Full-frame video stabilization with motion inpainting}, year = {2006}, @@ -664,7 +668,7 @@ number = {7}, publisher = {IEEE} } -@ARTICLE{ORourke86, +@article{ORourke86, author = {O'Rourke, Joseph and Aggarwal, Alok and Maddila, Sanjeev and Baldwin, Michael}, title = {An optimal algorithm for finding minimal enclosing triangles}, year = {1986}, @@ -674,7 +678,7 @@ number = {2}, publisher = {Elsevier} } -@INPROCEEDINGS{PM03, +@inproceedings{PM03, author = {P{\'e}rez, Patrick and Gangnet, Michel and Blake, Andrew}, title = {Poisson image editing}, booktitle = {ACM Transactions on Graphics (TOG)}, @@ -682,26 +686,26 @@ pages = {313--318}, volume = {22}, number = {3}, - organization = {ACM} + publisher = {ACM} } -@INPROCEEDINGS{Puzicha1997, +@inproceedings{Puzicha1997, author = {Puzicha, Jan and Hofmann, Thomas and Buhmann, Joachim M}, title = {Non-parametric similarity measures for unsupervised texture segmentation and image retrieval}, booktitle = {Computer Vision and Pattern Recognition, 1997. Proceedings., 1997 IEEE Computer Society Conference on}, year = {1997}, pages = {267--272}, - organization = {IEEE} + publisher = {IEEE} } -@INPROCEEDINGS{RB99, +@inproceedings{RB99, author = {Robertson, Mark A and Borman, Sean and Stevenson, Robert L}, title = {Dynamic range improvement through multiple exposures}, booktitle = {Image Processing, 1999. ICIP 99. Proceedings. 1999 International Conference on}, year = {1999}, pages = {159--163}, volume = {3}, - organization = {IEEE} + publisher = {IEEE} } -@ARTICLE{RD05, +@article{RD05, author = {Reinhard, Erik and Devlin, Kate}, title = {Dynamic range reduction inspired by photoreceptor physiology}, year = {2005}, @@ -711,40 +715,40 @@ number = {1}, publisher = {IEEE} } -@INPROCEEDINGS{RPROP93, +@inproceedings{RPROP93, author = {Riedmiller, Martin and Braun, Heinrich}, title = {A direct adaptive method for faster backpropagation learning: The RPROP algorithm}, booktitle = {Neural Networks, 1993., IEEE International Conference on}, year = {1993}, pages = {586--591}, - organization = {IEEE} + publisher = {IEEE} } -@INPROCEEDINGS{RRKB11, +@inproceedings{RRKB11, author = {Rublee, Ethan and Rabaud, Vincent and Konolige, Kurt and Bradski, Gary}, title = {ORB: an efficient alternative to SIFT or SURF}, booktitle = {Computer Vision (ICCV), 2011 IEEE International Conference on}, year = {2011}, pages = {2564--2571}, - organization = {IEEE} + publisher = {IEEE} } -@TECHREPORT{RS04, +@techreport{RS04, author = {Szeliski, R}, title = {Image alignment and stitching: a tutorial, Microsoft Corporation, Redmond, WA}, year = {2004}, institution = {MSR-TR-2004-92} } -@BOOK{RS10, +@book{RS10, author = {Szeliski, Richard}, title = {Computer vision: algorithms and applications}, year = {2010}, publisher = {Springer} } -@ARTICLE{Rafael12, +@article{Rafael12, author = {von Gioi, Rafael Grompone and Jakubowicz, J{\'e}r{\'e}mie and Morel, Jean-Michel and Randall, Gregory}, title = {LSD: a line segment detector}, year = {2012} } -@INCOLLECTION{Rosten06, +@incollection{Rosten06, author = {Rosten, Edward and Drummond, Tom}, title = {Machine learning for high-speed corner detection}, booktitle = {Computer Vision--ECCV 2006}, @@ -753,14 +757,15 @@ publisher = {Springer} } @inproceedings{mair2010_agast, - title={Adaptive and Generic Corner Detection Based on the Accelerated Segment Test"}, - author={"Elmar Mair and Gregory D. Hager and Darius Burschka and Michael Suppa and Gerhard Hirzinger"}, - year={"2010"}, - month={"September"}, - booktitle={"European Conference on Computer Vision (ECCV'10)"}, - url={"http://www6.in.tum.de/Main/ResearchAgast" + title = {Adaptive and Generic Corner Detection Based on the Accelerated Segment Test}, + author = {Mair, Elmar and Hager, Gregory D. and Burschka, Darius and Suppa, Michael and Hirzinger, Gerhard}, + year = {2010}, + month = sep, + booktitle = {European Conference on Computer Vision (ECCV'10)}, + url = {http://www6.in.tum.de/Main/ResearchAgast}, + month_numeric = {9} } -@ARTICLE{Rubner2000, +@article{Rubner2000, author = {Rubner, Yossi and Tomasi, Carlo and Guibas, Leonidas J}, title = {The earth mover's distance as a metric for image retrieval}, year = {2000}, @@ -770,13 +775,13 @@ number = {2}, publisher = {Springer} } -@ARTICLE{RubnerSept98, +@article{RubnerSept98, author = {Rubner, Yossi and Tomasi, Carlo and Guibas, Leonidas J}, title = {The Earth Mover''s Distance as a Metric for Image Retrieval}, year = {1998}, publisher = {Stanford University} } -@ARTICLE{SS00, +@article{SS00, author = {Shum, Heung-Yeung and Szeliski, Richard}, title = {Systems and experiment paper: Construction of panoramic image mosaics with global and local alignment}, year = {2000}, @@ -786,15 +791,15 @@ number = {2}, publisher = {Springer} } -@INPROCEEDINGS{Shi94, +@inproceedings{Shi94, author = {Shi, Jianbo and Tomasi, Carlo}, title = {Good features to track}, booktitle = {Computer Vision and Pattern Recognition, 1994. Proceedings CVPR'94., 1994 IEEE Computer Society Conference on}, year = {1994}, pages = {593--600}, - organization = {IEEE} + publisher = {IEEE} } -@ARTICLE{Sklansky82, +@article{Sklansky82, author = {Sklansky, Jack}, title = {Finding the convex hull of a simple polygon}, year = {1982}, @@ -804,7 +809,7 @@ number = {2}, publisher = {Elsevier} } -@ARTICLE{Slabaugh, +@article{Slabaugh, author = {Slabaugh, Gregory G}, title = {Computing Euler angles from a rotation matrix}, year = {1999}, @@ -812,12 +817,12 @@ journal = {Retrieved on August}, volume = {6} } -@MISC{SteweniusCFS, +@misc{SteweniusCFS, author = {Stewenius, Henrik}, title = {Calibrated Fivepoint solver}, url = {http://www.vis.uky.edu/~stewe/FIVEPOINT/} } -@ARTICLE{Suzuki85, +@article{Suzuki85, author = {Suzuki, Satoshi and others}, title = {Topological structural analysis of digitized binary images by border following}, year = {1985}, @@ -827,7 +832,7 @@ number = {1}, publisher = {Elsevier} } -@ARTICLE{TehChin89, +@article{TehChin89, author = {Teh, C-H and Chin, Roland T.}, title = {On the detection of dominant points on digital curves}, year = {1989}, @@ -837,7 +842,7 @@ number = {8}, publisher = {IEEE} } -@ARTICLE{Telea04, +@article{Telea04, author = {Telea, Alexandru}, title = {An image inpainting technique based on the fast marching method}, year = {2004}, @@ -847,16 +852,16 @@ number = {1}, publisher = {Taylor \& Francis} } -@INPROCEEDINGS{UES01, +@inproceedings{UES01, author = {Uyttendaele, Matthew and Eden, Ashley and Skeliski, R}, title = {Eliminating ghosting and exposure artifacts in image mosaics}, booktitle = {Computer Vision and Pattern Recognition, 2001. CVPR 2001. Proceedings of the 2001 IEEE Computer Society Conference on}, year = {2001}, pages = {II--509}, volume = {2}, - organization = {IEEE} + publisher = {IEEE} } -@INPROCEEDINGS{V03, +@inproceedings{V03, author = {Kwatra, Vivek and Sch{\"o}dl, Arno and Essa, Irfan and Turk, Greg and Bobick, Aaron}, title = {Graphcut textures: image and video synthesis using graph cuts}, booktitle = {ACM Transactions on Graphics (ToG)}, @@ -864,18 +869,18 @@ pages = {277--286}, volume = {22}, number = {3}, - organization = {ACM} + publisher = {ACM} } -@INPROCEEDINGS{Viola01, +@inproceedings{Viola01, author = {Viola, Paul and Jones, Michael J.}, title = {Rapid object detection using a boosted cascade of simple features}, booktitle = {Computer Vision and Pattern Recognition, 2001. CVPR 2001. Proceedings of the 2001 IEEE Computer Society Conference on}, year = {2001}, pages = {I--511}, volume = {1}, - organization = {IEEE} + publisher = {IEEE} } -@ARTICLE{Viola04, +@article{Viola04, author = {Viola, Paul and Jones, Michael J.}, title = {Robust real-time face detection}, journal = {International Journal of Computer Vision}, @@ -885,28 +890,28 @@ pages = {137--154}, publisher = {Kluwer Academic Publishers} } -@INPROCEEDINGS{WJ10, +@inproceedings{WJ10, author = {Xu, Wei and Mulligan, Jane}, title = {Performance evaluation of color correction approaches for automatic multi-view image and video stitching}, booktitle = {Computer Vision and Pattern Recognition (CVPR), 2010 IEEE Conference on}, year = {2010}, pages = {263--270}, - organization = {IEEE} + publisher = {IEEE} } -@MISC{Welch95, +@misc{Welch95, author = {Welch, Greg and Bishop, Gary}, title = {An introduction to the Kalman filter}, year = {1995} } -@INPROCEEDINGS{Yang2010, +@inproceedings{Yang2010, author = {Yang, Qingxiong and Wang, Liang and Ahuja, Narendra}, title = {A constant-space belief propagation algorithm for stereo matching}, booktitle = {Computer Vision and Pattern Recognition (CVPR), 2010 IEEE Conference on}, year = {2010}, pages = {1458--1465}, - organization = {IEEE} + publisher = {IEEE} } -@ARTICLE{Yuen90, +@article{Yuen90, author = {Yuen, HK and Princen, John and Illingworth, John and Kittler, Josef}, title = {Comparative study of Hough transform methods for circle finding}, year = {1990}, @@ -916,7 +921,7 @@ number = {1}, publisher = {Elsevier} } -@INCOLLECTION{Zach2007, +@incollection{Zach2007, author = {Zach, Christopher and Pock, Thomas and Bischof, Horst}, title = {A duality based approach for realtime TV-L 1 optical flow}, booktitle = {Pattern Recognition}, @@ -924,7 +929,7 @@ pages = {214--223}, publisher = {Springer} } -@ARTICLE{Zhang2000, +@article{Zhang2000, author = {Zhang, Zhengyou}, title = {A flexible new technique for camera calibration}, year = {2000}, @@ -934,16 +939,16 @@ number = {11}, publisher = {IEEE} } -@INPROCEEDINGS{Zivkovic2004, +@inproceedings{Zivkovic2004, author = {Zivkovic, Zoran}, title = {Improved adaptive Gaussian mixture model for background subtraction}, booktitle = {Pattern Recognition, 2004. ICPR 2004. Proceedings of the 17th International Conference on}, year = {2004}, pages = {28--31}, volume = {2}, - organization = {IEEE} + publisher = {IEEE} } -@ARTICLE{Zivkovic2006, +@article{Zivkovic2006, author = {Zivkovic, Zoran and van der Heijden, Ferdinand}, title = {Efficient adaptive density estimation per image pixel for the task of background subtraction}, year = {2006}, @@ -953,15 +958,15 @@ number = {7}, publisher = {Elsevier} } -@INPROCEEDINGS{arthur_kmeanspp_2007, +@inproceedings{arthur_kmeanspp_2007, author = {Arthur, David and Vassilvitskii, Sergei}, title = {k-means++: The advantages of careful seeding}, booktitle = {Proceedings of the eighteenth annual ACM-SIAM symposium on Discrete algorithms}, year = {2007}, pages = {1027--1035}, - organization = {Society for Industrial and Applied Mathematics} + publisher = {Society for Industrial and Applied Mathematics} } -@ARTICLE{mitchell2005logistic, +@article{mitchell2005logistic, author = {Mitchell, Tom M}, title = {Logistic Regression}, year = {2005}, @@ -970,97 +975,98 @@ volume = {10} } @inproceedings{vacavant2013benchmark, - title={A benchmark dataset for outdoor foreground/background extraction}, - author={Vacavant, Antoine and Chateau, Thierry and Wilhelm, Alexis and Lequi{\`e}vre, Laurent}, - booktitle={Computer Vision-ACCV 2012 Workshops}, - pages={291--300}, - year={2013}, - organization={Springer} + title = {A benchmark dataset for outdoor foreground/background extraction}, + author = {Vacavant, Antoine and Chateau, Thierry and Wilhelm, Alexis and Lequi{\`e}vre, Laurent}, + booktitle = {Computer Vision-ACCV 2012 Workshops}, + pages = {291--300}, + year = {2013}, + publisher = {Springer} } @incollection{Liao2007, - title={Learning multi-scale block local binary patterns for face recognition}, - author={Liao, Shengcai and Zhu, Xiangxin and Lei, Zhen and Zhang, Lun and Li, Stan Z}, - booktitle={Advances in Biometrics}, - pages={828--837}, - year={2007}, - publisher={Springer} + title = {Learning multi-scale block local binary patterns for face recognition}, + author = {Liao, Shengcai and Zhu, Xiangxin and Lei, Zhen and Zhang, Lun and Li, Stan Z}, + booktitle = {Advances in Biometrics}, + pages = {828--837}, + year = {2007}, + publisher = {Springer} } @incollection{nister2008linear, - title={Linear time maximally stable extremal regions}, - author={Nist{\'e}r, David and Stew{\'e}nius, Henrik}, - booktitle={Computer Vision--ECCV 2008}, - pages={183--196}, - year={2008}, - publisher={Springer} + title = {Linear time maximally stable extremal regions}, + author = {Nist{\'e}r, David and Stew{\'e}nius, Henrik}, + booktitle = {Computer Vision--ECCV 2008}, + pages = {183--196}, + year = {2008}, + publisher = {Springer} } @inproceedings{forssen2007maximally, - title={Maximally stable colour regions for recognition and matching}, - author={Forss{\'e}n, Per-Erik}, - booktitle={Computer Vision and Pattern Recognition, 2007. CVPR'07. IEEE Conference on}, - pages={1--8}, - year={2007}, - organization={IEEE} + title = {Maximally stable colour regions for recognition and matching}, + author = {Forss{\'e}n, Per-Erik}, + booktitle = {Computer Vision and Pattern Recognition, 2007. CVPR'07. IEEE Conference on}, + pages = {1--8}, + year = {2007}, + publisher = {IEEE} } @incollection{bottou2010large, - title={Large-scale machine learning with stochastic gradient descent}, - author={Bottou, L{\'e}on}, - booktitle={Proceedings of COMPSTAT'2010}, - pages={177--186}, - year={2010}, - publisher={Springer} + title = {Large-scale machine learning with stochastic gradient descent}, + author = {Bottou, L{\'e}on}, + booktitle = {Proceedings of COMPSTAT'2010}, + pages = {177--186}, + year = {2010}, + publisher = {Springer} } -@INPROCEEDINGS{Ke17, +@inproceedings{Ke17, author = {Ke, Tong and Roumeliotis, Stergios}, title = {An Efficient Algebraic Solution to the Perspective-Three-Point Problem}, booktitle = {Computer Vision and Pattern Recognition (CVPR), 2017 IEEE Conference on}, year = {2017}, - organization = {IEEE} + publisher = {IEEE} } - -@ARTICLE{gonzalez, - title={Digital Image Fundamentals, Digital Imaging Processing}, - author={Gonzalez, Rafael C and others}, - year={1987}, - publisher={Addison Wesley Publishing Company} +@article{gonzalez, + title = {Digital Image Fundamentals, Digital Imaging Processing}, + author = {Gonzalez, Rafael C and others}, + year = {1987}, + publisher = {Addison Wesley Publishing Company} } - -@ARTICLE{gruzman, - title={Цифровая обработка изображений в информационных системах}, - author={Грузман, И.С. and Киричук, В.С. and Косых, В.П. and Перетягин, Г.И. and Спектор, А.А.}, - year={2000}, - publisher={Изд-во НГТУ Новосибирск} +@article{gruzman, + title = {Цифровая обработка изображений в информационных системах}, + author = {Грузман, И.С. and Киричук, В.С. and Косых, В.П. and Перетягин, Г.И. and Спектор, А.А.}, + year = {2000}, + publisher = {Изд-во НГТУ Новосибирск} +} +@inproceedings{duda2018, + title = {Accurate Detection and Localization of Checkerboard Corners for Calibration}, + year = {2018}, + booktitle = {29th British Machine Vision Conference. British Machine Vision Conference (BMVC-29), September 3-6, Newcastle, United Kingdom}, + publisher = {BMVA Press}, + author = {Duda, Alexander and Frese, Udo} } - @book{jahne2000computer, - title={Computer vision and applications: a guide for students and practitioners}, - author={Jahne, Bernd}, - year={2000}, - publisher={Elsevier} + title = {Computer vision and applications: a guide for students and practitioners}, + author = {Jahne, Bernd}, + year = {2000}, + publisher = {Elsevier} } - @book{bigun2006vision, - title={Vision with direction}, - author={Bigun, Josef}, - year={2006}, - publisher={Springer} + title = {Vision with direction}, + author = {Bigun, Josef}, + year = {2006}, + publisher = {Springer} } - @inproceedings{van1995estimators, - title={Estimators for orientation and anisotropy in digitized images}, - author={Van Vliet, Lucas J and Verbeek, Piet W}, - booktitle={ASCI}, - volume={95}, - pages={16--18}, - year={1995} + title = {Estimators for orientation and anisotropy in digitized images}, + author = {Van Vliet, Lucas J and Verbeek, Piet W}, + booktitle = {ASCI}, + volume = {95}, + pages = {16--18}, + year = {1995} } - @article{yang1996structure, - title={Structure adaptive anisotropic image filtering}, - author={Yang, Guang-Zhong and Burger, Peter and Firmin, David N and Underwood, SR}, - journal={Image and Vision Computing}, - volume={14}, - number={2}, - pages={135--145}, - year={1996}, - publisher={Elsevier} + title = {Structure adaptive anisotropic image filtering}, + author = {Yang, Guang-Zhong and Burger, Peter and Firmin, David N and Underwood, SR}, + journal = {Image and Vision Computing}, + volume = {14}, + number = {2}, + pages = {135--145}, + year = {1996}, + publisher = {Elsevier} }