Get started in the rapidly expanding field of computer vision with this practical guide. Written by Adrian Kaehler and Gary Bradski, creator of the open source OpenCV library, this book provides a thorough introduction for developers, academics, roboticists, and hobbyists. You…ll learn what it takes to build applications that enable computers to „see” and make decisions based on that data.With over 500 functions that span many areas in vision, OpenCV is used for commercial applications such as security, medical imaging, pattern and face recognition, robotics, and factory product inspection. This book gives you a firm grounding in computer vision and OpenCV for building simple or sophisticated vision applications. Hands-on exercises in each chapter help you apply what you…ve learned.This volume covers the entire library, in its modern C++ implementation, including machine learning tools for computer vision.Learn OpenCV data types, array types, and array operationsCapture and store still and video images with HighGUITransform images to stretch, shrink, warp, remap, and repairExplore pattern recognition, including face detectionTrack objects and motion through the visual fieldReconstruct 3D images from stereo visionDiscover basic and advanced machine learning techniques in OpenCV Spis treści: PrefacePurpose of This BookWho This Book Is ForWhat This Book Is NotAbout the Programs in This BookPrerequisitesHow This Book Is Best UsedConventions Used in This BookUsing Code ExamplesOReilly SafariWed Like to Hear from YouAcknowledgmentsThanks for Help on OpenCVThanks for Help on This BookAdrian Adds…Gary Adds…1. OverviewWhat Is OpenCV?Who Uses OpenCV?What Is Computer Vision?The Origin of OpenCVOpenCV Block DiagramSpeeding Up OpenCV with IPPWho Owns OpenCV?Downloading and Installing OpenCVInstallationWindowsLinuxMac OS XGetting the Latest OpenCV via GitMore OpenCV DocumentationSupplied DocumentationOnline Documentation and the WikiOpenCV Contribution RepositoryDownloading and Building Contributed ModulesPortabilitySummaryExercises2. Introduction to OpenCVInclude FilesResourcesFirst ProgramDisplay a PictureSecond ProgramVideoMoving AroundA Simple TransformationA Not-So-Simple TransformationInput from a CameraWriting to an AVI FileSummaryExercises3. Getting to Know OpenCV Data TypesThe BasicsOpenCV Data TypesOverview of the Basic TypesBasic Types: Getting Down to DetailsThe point classesThe cv::Scalar classThe size classesThe cv::Rect classThe cv::RotatedRect classThe fixed matrix classesThe fixed vector classesThe complex number classesHelper ObjectsThe cv::TermCriteria classThe cv::Range classThe cv::Ptr template and Garbage Collection 101The cv::Exception class and exception handlingThe cv::DataType templateThe cv::InputArray and cv::OutputArray classesUtility Functionscv::alignPtr()cv::alignSize()cv::allocate()cv::deallocate()cv::fastAtan2()cvCeil()cv::cubeRoot()cv::CV_Assert() and CV_DbgAssert()cv::CV_Error() and CV_Error_()cv::error()cv::fastFree()cv::fastMalloc()cvFloor()cv::format()cv::getCPUTickCount()cv::getNumThreads()cv::getOptimalDFTSize()cv::getThreadNum()cv::getTickCount()cv::getTickFrequency()cvIsInf()cvIsNaN()cvRound()cv::setNumThreads()cv::setUseOptimized()cv::useOptimized()The Template StructuresSummaryExercises4. Images and Large Array TypesDynamic and Variable StorageThe cv::Mat Class: N-Dimensional Dense ArraysCreating an ArrayAccessing Array Elements IndividuallyThe N-ary Array Iterator: NAryMatIteratorAccessing Array Elements by BlockMatrix Expressions: Algebra and cv::MatSaturation CastingMore Things an Array Can DoThe cv::SparseMat Class: Sparse ArraysAccessing Sparse Array ElementsFunctions Unique to Sparse ArraysTemplate Structures for Large Array TypesSummaryExercises5. Array OperationsMore Things You Can Do with Arrayscv::abs()cv::absdiff()cv::add()cv::addWeighted()cv::bitwise_and()cv::bitwise_not()cv::bitwise_or()cv::bitwise_xor()cv::calcCovarMatrix()cv::cartToPolar()cv::checkRange()cv::compare()cv::completeSymm()cv::convertScaleAbs()cv::countNonZero()cv::cvarrToMat()cv::dct()cv::dft()cv::cvtColor()cv::determinant()cv::divide()cv::eigen()cv::exp()cv::extractImageCOI()cv::flip()cv::gemm()cv::getConvertElem() and cv::getConvertScaleElem()cv::idct()cv::idft()cv::inRange()cv::insertImageCOI()cv::invert()cv::log()cv::LUT()cv::magnitude()cv::Mahalanobis()cv::max()cv::mean()cv::meanStdDev()cv::merge()cv::min()cv::minMaxIdx()cv::minMaxLoc()cv::mixChannels()cv::mulSpectrums()cv::multiply()cv::mulTransposed()cv::norm()cv::normalize()cv::perspectiveTransform()cv::phase()cv::polarToCart()cv::pow()cv::randu()cv::randn()cv::randShuffle()cv::reduce()cv::repeat()cv::scaleAdd()cv::setIdentity()cv::solve()cv::solveCubic()cv::solvePoly()cv::sort()cv::sortIdx()cv::split()cv::sqrt()cv::subtract()cv::sum()cv::trace()cv::transform()cv::transpose()SummaryExercises6. Drawing and AnnotatingDrawing ThingsLine Art and Filled Polygonscv::circle()cv::clipLine()cv::ellipse()cv::ellipse2Poly()cv::fillConvexPoly()cv::fillPoly()cv::line()cv::rectangle()cv::polyLines()cv::LineIteratorFonts and Textcv::putText()cv::getTextSize()SummaryExercises7. Functors in OpenCVObjects That Do StuffPrincipal Component Analysis (cv::PCA)cv::PCA::PCA()cv::PCA::operator()()cv::PCA::project()cv::PCA::backProject()Singular Value Decomposition (cv::SVD)cv::SVD()cv::SVD::operator()()cv::SVD::compute()cv::SVD::solveZ()cv::SVD::backSubst()Random Number Generator (cv::RNG)cv::theRNG()cv::RNG()cv::RNG::operator T(), where T is your favorite typecv::RNG::operator()cv::RNG::uniform()cv::RNG::gaussian()cv::RNG::fill()SummaryExercises8. Image, Video, and Data FilesHighGUI: Portable Graphics ToolkitWorking with Image FilesLoading and Saving ImagesReading files with cv::imread()Writing files with cv::imwrite()A Note About CodecsCompression and DecompressionCompressing files with cv::imencode()Uncompressing files with cv::imdecode()Working with VideoReading Video with the cv::VideoCapture ObjectReading frames with cv::VideoCapture::read()Reading frames with cv::VideoCapture::operator>>()Reading frames with cv::VideoCapture::grab() and cv::VideoCapture::retrieve()Camera properties: cv::VideoCapture::get() and cv::VideoCapture::set()Writing Video with the cv::VideoWriter ObjectWriting frames with cv::VideoWriter::write()Writing frames with cv::VideoWriter::operator<<()Data PersistenceWriting to a cv::FileStorageReading from a cv::FileStoragecv::FileNodeSummaryExercises9. Cross-Platform and Native WindowsWorking with WindowsHighGUI Native Graphical User InterfaceCreating a window with cv::namedWindow()Drawing an image with cv::imshow()Updating a window and cv::waitKey()An example displaying an imageMouse eventsSliders, trackbars, and switchesSurviving without buttonsWorking with the Qt BackendGetting startedThe actions menuThe text overlayWriting your own text into the status barThe properties windowTrackbars revisitedCreating buttons with cv::createButton()Text and fontsSetting and getting window propertiesSaving and recovering window stateInteracting with OpenGLIntegrating OpenCV with Full GUI ToolkitsAn example of OpenCV and QtAn example of OpenCV and wxWidgetsAn example of OpenCV and the Windows Template LibrarySummaryExercises10. Filters and ConvolutionOverviewBefore We BeginFilters, Kernels, and ConvolutionAnchor pointsBorder Extrapolation and Boundary ConditionsMaking borders yourselfManual extrapolationThreshold OperationsOtsus AlgorithmAdaptive ThresholdSmoothingSimple Blur and the Box FilterMedian FilterGaussian FilterBilateral FilterDerivatives and GradientsThe Sobel DerivativeScharr FilterThe LaplacianImage MorphologyDilation and ErosionThe General Morphology FunctionOpening and ClosingMorphological GradientTop Hat and Black HatMaking Your Own KernelConvolution with an Arbitrary Linear FilterApplying a General Filter with cv::filter2D()Applying a General Separable Filter with cv::sepFilter2DKernel Builderscv::getDerivKernel()cv::getGaussianKernel()SummaryExercises11. General Image TransformsOverviewStretch, Shrink, Warp, and RotateUniform Resizecv::resize()Image Pyramidscv::pyrDown()cv::buildPyramid()cv::pyrUp()The Laplacian pyramidNonuniform MappingsAffine Transformationcv::warpAffine(): Dense affine transformationscv::getAffineTransform(): Computing an affine map matrixcv::transform(): Sparse affine transformationscv::invertAffineTransform(): Inverting an affine transformationPerspective Transformationcv::warpPerspective(): Dense perspective transformcv::getPerspectiveTransform(): Computing the perspective map matrixcv::perspectiveTransform(): Sparse perspective transformationsGeneral RemappingsPolar Mappingscv::cartToPolar(): Converting from Cartesian to polar coordinatescv::polarToCart(): Converting from polar to Cartesian coordinatesLogPolarcv::logPolar()Arbitrary Mappingscv::remap(): General image remappingImage RepairInpaintingDenoisingBasic FNLMD with cv::fastNlMeansDenoising()FNLMD on color images with cv::fastNlMeansDenoisingColor()FNLMD on video with cv::fastNlMeansDenoisingMulti() and cv::fastNlMeansDenoisingColorMulti()Histogram Equalizationcv::equalizeHist(): Contrast equalizationSummaryExercises12. Image AnalysisOverviewDiscrete Fourier Transformcv::dft(): The Discrete Fourier Transformcv::idft(): The Inverse Discrete Fourier Transformcv::mulSpectrums(): Spectrum MultiplicationConvolution Using Discrete Fourier Transformscv::dct(): The Discrete Cosine Transformcv::idct(): The Inverse Discrete Cosine TransformIntegral Imagescv::integral() for Standard Summation Integralcv::integral() for Squared Summation Integralcv::integral() for Tilted Summation IntegralThe Canny Edge Detectorcv::Canny()Hough TransformsHough Line Transformcv::HoughLines(): The standard and multiscale Hough transformscv::HoughLinesP(): The progressive probabilistic Hough transformHough Circle Transformcv::HoughCircles(): the Hough circle transformDistance Transformationcv::distanceTransform() for Unlabeled Distance Transformcv::distanceTransform() for Labeled Distance TransformSegmentationFlood FillWatershed AlgorithmGrabcutsMean-Shift SegmentationSummaryExercises13. Histograms and TemplatesHistogram Representation in OpenCVcv::calcHist(): Creating a Histogram from DataBasic Manipulations with HistogramsHistogram NormalizationHistogram ThresholdFinding the Most Populated BinComparing Two HistogramsCorrelation method (cv::COMP_CORREL)Chi-square method (cv::COMP_CHISQR_ALT)Intersection method (cv::COMP_INTERSECT)Bhattacharyya distance method (cv::COMP_BHATTACHARYYA)Histogram Usage ExamplesSome More Sophisticated Histograms MethodsEarth Movers DistanceBack ProjectionBasic back projection: cv::calcBackProject()Template MatchingSquare Difference Matching Method (cv::TM_SQDIFF)Normalized Square Difference Matching Method (cv::TM_SQDIFF_NORMED)Correlation Matching Methods (cv::TM_CCORR)Normalized Cross-Correlation Matching Method (cv::TM_CCORR_NORMED)Correlation Coefficient Matching Methods (cv::TM_CCOEFF)Normalized Correlation Coefficient Matching Method (cv::TM_CCOEFF_NORMED)SummaryExercises14. ContoursContour FindingContour HierarchiesFinding contours with cv::findContours()Drawing ContoursA Contour ExampleAnother Contour ExampleFast Connected Component AnalysisMore to Do with ContoursPolygon ApproximationsPolygon approximation with cv::approxPolyDP()The Douglas-Peucker algorithm explainedGeometry and Summary CharacteristicsLength using cv::arcLength()Upright bounding box with cv::boundingRect()A minimum area rectangle with cv::minAreaRect()A minimal enclosing circle using cv::minEnclosingCircle()Fitting an ellipse with cv::fitEllipse()Finding the best line fit to your contour with cv::fitLine()Finding the convex hull of a contour using cv::convexHull()Geometrical TestsTesting if a point is inside a polygon with cv::pointPolygonTest()Testing whether a contour is convex with cv::isContourConvex()Matching Contours and ImagesMomentsComputing moments with cv::moments()More About MomentsCentral moments are invariant under translationNormalized central moments are also invariant under scalingHu invariant moments are invariant under rotationComputing Hu invariant moments with cv::HuMoments()Matching and Hu MomentsUsing Shape Context to Compare ShapesStructure of the shape moduleThe shape context distance extractorHausdorff distance extractorSummaryExercises15. Background SubtractionOverview of Background SubtractionWeaknesses of Background SubtractionScene ModelingA Slice of PixelsFrame DifferencingAveraging Background MethodAccumulating Means, Variances, and CovariancesComputing the mean with cv::Mat::operator+=()Computing the mean with cv::accumulate()Variation: Computing the mean with cv::accumulateWeighted()Finding the variance with the help of cv::accumulateSquare()Finding the covariance with cv::accumulateWeighted()A brief note on model testing and cv::Mahalanobis()A More Advanced Background Subtraction MethodStructuresLearning the BackgroundLearning with Moving Foreground ObjectsBackground Differencing: Finding Foreground ObjectsUsing the Codebook Background ModelA Few More Thoughts on Codebook ModelsConnected Components for Foreground CleanupA Quick TestComparing Two Background MethodsOpenCV Background Subtraction EncapsulationThe cv::BackgroundSubtractor Base ClassKaewTraKuPong and Bowden Methodcv::BackgroundSubtractorMOGZivkovic Methodcv::BackgroundSubtractorMOG2SummaryExercises16. Keypoints and DescriptorsKeypoints and the Basics of TrackingCorner FindingFinding corners using cv::goodFeaturesToTrack()Subpixel cornersIntroduction to Optical FlowLucas-Kanade Method for Sparse Optical FlowHow Lucas-Kanade worksPyramid Lucas-Kanade code: cv::calcOpticalFlowPyrLK()A worked exampleGeneralized Keypoints and DescriptorsOptical Flow, Tracking, and RecognitionHow OpenCV Handles Keypoints and Descriptors, the General CaseThe cv::KeyPoint objectThe (abstract) class that finds keypoints and/or computes descriptors for them: cv::Feature2DThe cv::DMatch objectThe (abstract) keypoint matching class: cv::DescriptorMatcherCore Keypoint Detection MethodsThe Harris-Shi-Tomasi feature detector and cv::GoodFeaturesToTrackDetectorKeypoint finderAdditional functionsA brief look under the hoodThe simple blob detector and cv::SimpleBlobDetectorKeypoint finderThe FAST feature detector and cv::FastFeatureDetectorKeypoint finderThe SIFT feature detector and cv::xfeatures2d::SIFTKeypoint finder and feature extractorThe SURF feature detector and cv::xfeatures2d::SURFKeypoint finder and feature extractorAdditional functions provided by cv::xfeatures2d::SURFThe Star/CenSurE feature detector and cv::xfeatures2d::StarDetectorKeypoint finderThe BRIEF descriptor extractor and cv::BriefDescriptorExtractorFeature extractorThe BRISK algorithmKeypoint finder and feature extractorAdditional functions provided by cv::BRISKThe ORB feature detector and cv::ORBKeypoint finder and feature extractorAdditional functions provided by cv::ORBThe FREAK descriptor extractor and cv::xfeatures2d::FREAKFeature extractorDense feature grids and the cv::DenseFeatureDetector classKeypoint finderKeypoint FilteringThe cv::KeyPointsFilter classMatching MethodsBrute force matching with cv::BFMatcherFast approximate nearest neighbors and cv::FlannBasedMatcherLinear indexing with cv::flann::LinearIndexParamsKD-tree indexing with cv::flann::KDTreeIndexParamsHierarchical k-means tree indexing with cv::flann::KMeansIndexParamsCombining KD-trees and k-means with cv::flann::CompositeIndexParamsLocality-sensitive hash (LSH) indexing with cv::flann::LshIndexParamsAutomatic index selection with cv::flann::AutotunedIndexParamsFLANN search parameters and cv::flann::SearchParamsDisplaying ResultsDisplaying keypoints with cv::drawKeypointsDisplaying keypoint matches with cv::drawMatchesSummaryExercises17. TrackingConcepts in TrackingDense Optical FlowThe Farnebäck Polynomial Expansion AlgorithmComputing dense optical flow with cv::calcOpticalFlowFarnebackThe Dual TV-L1 AlgorithmComputing dense optical flow with cv::createOptFlow_DualTVL1The Simple Flow AlgorithmComputing Simple Flow with cv::optflow::calcOpticalFlowSF()Mean-Shift and Camshift TrackingMean-ShiftCamshiftMotion TemplatesEstimatorsThe Kalman FilterWhat goes in and what comes outAssumptions required by the Kalman filterInformation fusionSystems with dynamicsKalman equationsTracking in OpenCV with cv::KalmanFilterKal
an filter example codeA Brief Note on the Extended Kalman FilterSummaryExercises18. Camera Models and CalibrationCamera ModelThe Basics of Projective GeometryRodrigues TransformLens DistortionsCalibrationRotation Matrix and Translation VectorCalibration BoardsFinding chessboard corners with cv::findChessboardCorners()Subpixel corners on chessboards and cv::cornerSubPix()Drawing chessboard corners with cv::drawChessboardCorners()Circle-grids and cv::findCirclesGrid()HomographyCamera CalibrationHow many chess corners for how many parameters?Whats under the hood?Calibration functionComputing extrinsics only with cv::solvePnP()Computing extrinsics only with cv::solvePnPRansac()UndistortionUndistortion MapsConverting Undistortion Maps Between Representations with cv::convertMaps()Computing Undistortion Maps with cv::initUndistortRectifyMap()Undistorting an Image with cv::remap()Undistortion with cv::undistort()Sparse Undistortion with cv::undistortPoints()Putting Calibration All TogetherSummaryExercises19. Projection and Three-Dimensional VisionProjectionsAffine and Perspective TransformationsBirds-Eye-View Transform ExampleThree-Dimensional Pose EstimationPose Estimation from a Single CameraComputing the pose of a known object with cv::solvePnP()Stereo ImagingTriangulationEpipolar GeometryThe Essential and Fundamental MatricesEssential matrix mathFundamental matrix mathHow OpenCV handles all of thisComputing Epipolar LinesStereo CalibrationStereo RectificationUncalibrated stereo rectification: Hartleys algorithmCalibrated stereo rectification: Bouguets algorithmRectification mapStereo CorrespondenceThe stereo matching classes: cv::StereoBM and cv::StereoSGBMBlock matchingComputing stereo depths with cv::StereoBMSemi-global block matchingComputing stereo depths with cv::StereoSGBMStereo Calibration, Rectification, and Correspondence Code ExampleDepth Maps from Three-Dimensional ReprojectionStructure from MotionFitting Lines in Two and Three DimensionsSummaryExercises20. The Basics of Machine Learning in OpenCVWhat Is Machine Learning?Training and Test SetsSupervised and Unsupervised LearningGenerative and Discriminative ModelsOpenCV ML AlgorithmsUsing Machine Learning in VisionVariable ImportanceDiagnosing Machine Learning ProblemsCross-validation, bootstrapping, ROC curves, and confusion matricesCost of misclassificationMismatched feature varianceLegacy Routines in the ML LibraryK-MeansProblems and solutionsK-means codeMahalanobis DistanceUsing the Mahalanobis distance to condition input dataUsing the Mahalanobis distance for classificationSummaryExercises21. StatModel: The Standard Model for Learning in OpenCVCommon Routines in the ML LibraryTraining and the cv::ml::TrainData StructureConstructing cv::ml::TrainDataConstructing cv::ml::TrainData from stored dataSecret sauce and cv::ml::TrainDataImplSplitting training dataAccessing cv::ml::TrainDataPredictionMachine Learning Algorithms Using cv::StatModelNave/Normal Bayes ClassifierThe nave/normal Bayes classifier and cv::ml::NormalBayesClassifierBinary Decision TreesRegression impurityClassification impurityOpenCV implementationDecision tree usageDecision tree resultsBoostingAdaBoostBoosting codeRandom TreesRandom trees codeUsing random treesExpectation MaximizationExpectation maximization with cv::EM()K-Nearest NeighborsUsing K-nearest neighbors with cv::ml::KNearest()Multilayer PerceptronBack propagationThe Rprop algorithmUsing artificial neural networks and back propagation with cv::ml::ANN_MLPParameters for trainingSupport Vector MachineAbout kernelsHandling outliersMulticlass extension of SVMOne-class SVMSupport vector regressionUsing support vector machines and cv::ml::SVM()Additional members of cv::ml::SVMSummaryExercises22. Object DetectionTree-Based Object Detection TechniquesCascade ClassifiersHaar-like featuresLocal binary pattern featuresTraining and pretrained detectorsSupervised Learning and Boosting TheoryBoosting in the Haar cascadeRejection cascadesViola-Jones classifier summaryThe cv::CascadeClassifer objectSearching an image with detectMultiScale()Face detection exampleLearning New ObjectsDetailed arguments to createsamplesDetailed arguments to traincascadeObject Detection Using Support Vector MachinesLatent SVM for Object DetectionObject detection with cv::dpm::DPMDetectorOther methods of cv::dpm::DPMDetectorWhere to get models for cv::dpm::DPMDetectorThe Bag of Words Algorithm and Semantic CategorizationTraining with cv::BOWTrainerK-means and cv::BOWKMeansTrainerCategorization with cv::BOWImgDescriptorExtractorPutting it together using a support vector machineSummaryExercises23. Future of OpenCVPast and PresentOpenCV 3.xHow Well Did Our Predictions Go Last Time?Future FunctionsCurrent GSoC WorkCommunity ContributionsOpenCV.orgSome AI SpeculationAfterwordA. Planar SubdivisionsDelaunay Triangulation, Voronoi TesselationCreating a Delaunay or Voronoi SubdivisionNavigating Delaunay SubdivisionsPoints from edgesLocating a point within a subdivisionOrbiting around a vertexRotating an edgeIdentifying the bounding triangleIdentifying the bounding triangle or edges on the convex hull and walking the hullUsage ExamplesExercisesB. opencv_contribAn Overview of the opencv_contrib ModulesContents of opencv_contribC. Calibration PatternsCalibration Patterns Used by OpenCVBibliographyIndex

Kategoria: E-Beletrystyka

Producent:

prezent na dzień dziecka, granted, cztery wesela, kapitan hak, grape, porządnie, dawn, święta rita modlitwa, półki na książki

yyyyy