<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://boofcv.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Peter</id>
	<title>BoofCV - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://boofcv.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Peter"/>
	<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Special:Contributions/Peter"/>
	<updated>2026-05-14T02:31:33Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.36.2</generator>
	<entry>
		<id>https://boofcv.org/index.php?title=Main_Page&amp;diff=3286</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Main_Page&amp;diff=3286"/>
		<updated>2025-07-01T21:27:26Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&lt;br /&gt;
[[File:Boofcv_logo_circles_frontpage.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
BoofCV is an open source library written from scratch for real-time computer vision. Its functionality covers a range of subjects, low-level image processing, camera calibration, feature detection/tracking, structure-from-motion, fiducial detection, and recognition. BoofCV has been released under an Apache  2.0 license for both academic and commercial use.&lt;br /&gt;
&lt;br /&gt;
BoofCV is organized into several packages: &amp;#039;&amp;#039;image processing&amp;#039;&amp;#039;, &amp;#039;&amp;#039;features&amp;#039;&amp;#039;, &amp;#039;&amp;#039;geometric vision&amp;#039;&amp;#039;, &amp;#039;&amp;#039;calibration&amp;#039;&amp;#039;, &amp;#039;&amp;#039;recognition&amp;#039;&amp;#039;,&amp;#039;&amp;#039;visualize&amp;#039;&amp;#039;, and &amp;#039;&amp;#039;IO&amp;#039;&amp;#039;.  &amp;#039;&amp;#039;Image processing&amp;#039;&amp;#039; contains commonly used image processing functions which operate directly on pixels.  &amp;#039;&amp;#039;Features&amp;#039;&amp;#039; contains feature extraction algorithms for use in higher level operations.  &amp;#039;&amp;#039;Calibration&amp;#039;&amp;#039; has routines for determining the camera&amp;#039;s intrinsic and extrinsic parameters.  &amp;#039;&amp;#039;Recognition&amp;#039;&amp;#039; is for recognition and tracking complex visual objects.  &amp;#039;&amp;#039;Geometric vision&amp;#039;&amp;#039; is composed of routines for processing extracted image features using 2D and 3D geometry. &amp;#039;&amp;#039;Visualize&amp;#039;&amp;#039; has routines for rendering and displaying extracted features.  &amp;#039;&amp;#039;IO&amp;#039;&amp;#039; has input and output routines for different data structures.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| &lt;br /&gt;
|-&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/wgPzlokxbXw|300|center}}&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/O_yAdsT8d84|300|center}}&lt;br /&gt;
|-&lt;br /&gt;
! New calibration tools in v0.39&lt;br /&gt;
! Three View Self Calibration&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://www.ninox360.com/calibration-targets 2022-Nov: Create calibration targets in your browser]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://www.ninox360.com/barcode-scanner 2022-Nov: Barcode scanner webapp]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://medium.com/p/35b431fcccf1 2022-Jan: Article on scanning Micro QR Codes]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[[Tutorial_Camera_Calibration|2021-Oct: Camera Calibration Tutorial has been re-written.]]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://youtu.be/RCL5tSt189M 2021-Mar: Stereo Cloud from Mars Perseverance Rover]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:Loose-lips.jpg|125px|link=https://groups.google.com/group/boofcv]] ||&lt;br /&gt;
{| width=&amp;quot;400pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Current Release: &amp;#039;&amp;#039;v1.2.3&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Date: &amp;#039;&amp;#039;July 1, 2025&amp;#039;&amp;#039; &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://github.com/lessthanoptimal/BoofCV/blob/v1.2.3/change.txt Change Log]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://youtu.be/BbTPQ9mIoQU Video Summary v0.38]&lt;br /&gt;
|}&lt;br /&gt;
| [[File:Boofcv_bug_propaganda_poster_small.jpg|125px|link=https://github.com/lessthanoptimal/BoofCV/issues]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| width=&amp;quot;600pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; |  [[File:Ninox360_icon_logo_moto.png|400px|link=https://www.ninox360.com]]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | A start up from the creators of BoofCV.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-help-icon.png|100px|link=[[Manual]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Manual]]&lt;br /&gt;
|-&lt;br /&gt;
| [[FAQ | FAQ]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.boofcv.org/javadoc/ JavaDoc]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCV/issues Report Bug]&lt;br /&gt;
|-&lt;br /&gt;
| [https://groups.google.com/group/boofcv Message Board]&lt;br /&gt;
|-&lt;br /&gt;
| [[Papers and Reports| Papers/Reports]]&lt;br /&gt;
|} &lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-binary-icon.png|100px|link=[https://github.com/lessthanoptimal/BoofCV Source Code]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Download|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.youtube.com/user/BoofCV/videos Videos]&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Bounties| Bounties ]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Contributing|Contribute]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCPP BoofCPP]&lt;br /&gt;
|} &lt;br /&gt;
| width&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-graph-icon.png|100px|link=[[Performance:BoofCV]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Performance:BoofCV|Performance]]&lt;br /&gt;
|-&lt;br /&gt;
| [[BoofCV Roadmap | Road Map]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Validation:Algorithms | Validation]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Projects_Using_BoofCV | Users ]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Acknowledgements|Acknowledgements]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;SPAN STYLE=&amp;quot;font-size: 14pt;text-align:center&amp;quot;&amp;gt;Prebuild Stand Alone Applications&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Examples_and_Demonstrations|Examples / Demonstrations]] || Example and demonstration applications&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create QR Code|QR Code Generator]] || Create and print QR Codes&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Square_Binary|Square Fiducials]] || Binary/Image Square Fiducial Generator &lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Calibration_Fiducials|Calibration Targets]] || Calibration Target Generator&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Camera_Calibration|Calibration]] || Camera Calibration Application&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Undistort|Lens Undistortion]] ||  Batch Removal of Lens Distortion&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Downsize|Image Downsize]] ||  Batch Image Down Sampling with minimal aliasing&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
| colspan=5 style=&amp;quot;background-color:#ffffdd;&amp;quot; align=&amp;quot;center&amp;quot; |&lt;br /&gt;
== Capability Summary ==&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Image Processing &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Feature &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Recognition&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Geometric &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Integration&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Image Convolution || [[Example_Convolution|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Image Derivatives || [[Example_Image_Derivative|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Thresholding || [[Example_Thresholding|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Ops || [[Example_Binary_Image|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Space || [[Example_Color_Space|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interpolation || [[Example_Interpolation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Deformation || [[Example_Key_Point_Based_Deformation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Blur || [[Example_Image_Blur|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Enhancement || [[Example_Image_Enhancement|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Noise Removal || [[Example_Wavelet_Noise_Removal|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fourier Transform || [[Example_Discrete_Fourier_Transform|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Wavelet Decomposition || &lt;br /&gt;
|- &lt;br /&gt;
| Discrete Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Float Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Scale Space Image || &lt;br /&gt;
|-&lt;br /&gt;
| Equirectangular || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye Cameras || [[Example_Fisheye_To_Pinhole|Example]]&lt;br /&gt;
|&lt;br /&gt;
|} &lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Black Polygons || [[Example_Detect_Black_Polygons|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Black Ellipses || [[Example_Detect_Black_Ellipses|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interest Points || [[Example_Detect_Interest_Points|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Line Detection || [[Example_Detect_Lines|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Motion Detection || [[Example_Background_Moving_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Contours || [[Example_Binary_Image|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Polygon Fitting || [[Example_Fit_Polygon|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Ellipse Fitting || [[Example_Fit_Ellipse|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Template Matching || [[Example_Template_Matching|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Interest Points || [[Example_Detect_Describe_Interface|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Dense Features || [[Example_Dense_Image_Features|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Point Tracking || [[Example_Track_Point_Features|Example]]&lt;br /&gt;
|-  &lt;br /&gt;
| Non-max Suppression || [[Example_Non_Maximum_Suppression|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Dense Optical Flow || [[Example_Dense_Optical_Flow|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Superpixels || [[Example_Superpixels|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Color Segmentation || [[Example_Color_Segmentation|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Scene Recognition || [[Example_Scene_Recognition|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Image Lookup || [[Example_Color_Histogram_Lookup|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| KNN Classifier || [[Example_Scene_Classification|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| CNN Classifiers || [[Example_Image_Classification|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Object Tracking || [[Example_Tracker_Object|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fiducials || [[Tutorial_Fiducials|Tutorial]]&lt;br /&gt;
|-&lt;br /&gt;
| QR Codes || [[Tutorial_QRCodes|Tutorial]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| SFM || [[Tutorial_Geometric_Vision|Tutorial]] &lt;br /&gt;
|- &lt;br /&gt;
| Camera Calibration || [[Tutorial_Camera_Calibration|Tutorial]]&lt;br /&gt;
|- &lt;br /&gt;
| Mono Calibration || [[Example_Calibrate_Planar_Mono|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Fisheye Calibration || [[Example_Calibrate_Planar_Fisheye|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Stereo Calibration || [[Example_Calibrate_Planar_Stereo|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Remove Distortion || [[Example_Remove_Lens_Distortion|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Equi to Pinhole || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye to Equi|| [[Example_Fisheye_To_Equirectangular|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Bundle Adjustment || [[Example Sparse Bundle Adjustment|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| 3D Stereo Cloud || [[Example_Stereo_Disparity_3D|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Monocular Stereo || [[Example_Stereo_Single_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Uncalibrated Stereo || [[Example_Three_View_Stereo_Uncalibrated|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Multi Baseline Stereo || [[Example_Multi_Baseline_Stereo|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Scene Reconstruction || [[Example_Multiview_Reconstruction_Dense|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Video Stabilization || [[Example_Video_Stabilization|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Video Mosaic || [[Example_Video_Mosaic|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Stereo || [[Example_Stereo_Visual_Odometry|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Mono Plane || [[Example_Visual_Odometry_Monocular_Plane|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: RGB-D || [[Example_Visual_Odometry_Depth|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
| Visualization&lt;br /&gt;
|-&lt;br /&gt;
| [[Android_support|Android]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Videos and Webcams|Video]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Kinect|Kinect]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Processing|Processing]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/PyBoof Python]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Download&amp;diff=3285</id>
		<title>Download</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Download&amp;diff=3285"/>
		<updated>2025-03-22T15:57:39Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BoofCV is available from its central repository at Github or through periodic releases.  Below are links to the latest stable release hosted on SourceForge.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Latest Stable Release:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* [https://sourceforge.net/projects/boofcv/files/v1.2.0/ Jars and Source Code]&lt;br /&gt;
* [https://github.com/lessthanoptimal/BoofCV/blob/v1.2.0/change.txt Change Log]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Pre-Built Applications:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* [[Applications#Examples_and_Demonstrations| Examples and Demonstrations ]]&lt;br /&gt;
&lt;br /&gt;
If you encounter any problems getting BoofCV up and running, please let us know!  A bug might have slipped through testing or if the instructions are not clear we would like to know.&lt;br /&gt;
&lt;br /&gt;
= Java Version =&lt;br /&gt;
&lt;br /&gt;
To run BoofCV requires Java 11 and above. Building BoofCV requires Java 17, but if you use the build in Gradle script that is handled for you.&lt;br /&gt;
&lt;br /&gt;
Where to download the Java Virtual Machine&lt;br /&gt;
* https://www.azul.com/downloads/zulu/&lt;br /&gt;
* https://adoptopenjdk.net/&lt;br /&gt;
&lt;br /&gt;
NOTE: Version 0.39 and before maintained compatibility with Java 8. &lt;br /&gt;
&lt;br /&gt;
= Maven Central =&lt;br /&gt;
The easiest way to use boofcv is to reference its jars on [https://search.maven.org/search?q=g:org.boofcv Maven Central].  See below for Maven and Gradle code.  BoofCV is broken up into many modules.  To make it easier to use BoofCV all of its core functionality can be referenced using the &amp;#039;all&amp;#039; module.  Individual modules in &amp;quot;integration&amp;quot; still must be referenced individually.&lt;br /&gt;
&lt;br /&gt;
Artifact List&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-core&amp;#039;&amp;#039; : All the core functionality of BoofCV.&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-all&amp;#039;&amp;#039; : All the core and integration packages in BoofCV. This can be very large. You probably want core!&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-android&amp;#039;&amp;#039; : [http://developer.android.com/index.html Android] support &lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-WebcamCapture&amp;#039;&amp;#039; : [http://webcam-capture.sarxos.pl/ Webcam Capture support]&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-javacv&amp;#039;&amp;#039; : [https://github.com/bytedeco/javacv JavaCV] (Reading OpenCV files)&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-ffmpeg&amp;#039;&amp;#039; : [https://github.com/bytedeco/javacpp-presets javacpp-presets] Reading videos&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-swing&amp;#039;&amp;#039; : Visualization using Java Swing&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-jcodec&amp;#039;&amp;#039; : [http://jcodec.org/ jcodec] Pure Java (and buggy) library for reading videos.&lt;br /&gt;
&lt;br /&gt;
== Gradle Dependencies ==&lt;br /&gt;
&lt;br /&gt;
Here are some examples for how to add BoofCV to your Gradle project. You will need to replace $VERSION with the latest version of BoofCV, e.g. 1.0.0. If you just want image processing, with very few external dependencies, just include the following in your Gradle script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
api(&amp;quot;org.boofcv:boofcv-core:$VERSION&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
It is possible to include only the modules inside of core that you need. While not difficult, you will need to learn more about how BoofCV is structured.&lt;br /&gt;
&lt;br /&gt;
Since this does not include GUI or Webcam code most of the examples will not run! Here&amp;#039;s how you can add them:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&amp;#039;boofcv-core&amp;#039;,&amp;#039;boofcv-swing&amp;#039;,&amp;#039;boofcv-WebcamCapture&amp;#039;,&amp;#039;demonstrations&amp;#039;].each&lt;br /&gt;
    { String a -&amp;gt; compile group: &amp;#039;org.boofcv&amp;#039;, name: a, version: VERSION }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Deep Learning does add some external dependencies that most people don&amp;#039;t need. In the future that might become an optional dependency. For now look at [[Optimizing BoofCV]] for more complex ways to reduce the jar size.&lt;br /&gt;
&lt;br /&gt;
= Bleeding Edge = &lt;br /&gt;
&lt;br /&gt;
The absolutely latest code is available on Github. This code should be considered developmental and may or may not work. Please follow build instructions included in the [https://github.com/lessthanoptimal/BoofCV#building-from-source README.MD] as those will be up to date. There is also a (slightly) out of date [https://youtu.be/qMTtdiujAtQ?t=67 YouTube Video].&lt;br /&gt;
&lt;br /&gt;
= Past Releases =&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; width=600px cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
! Version !! Link !! Description &lt;br /&gt;
|-&lt;br /&gt;
| v1.2.0 || [https://sourceforge.net/projects/boofcv/files/v1.2.0 Link] || Quality of life, performance, and optimal PnP refine&lt;br /&gt;
|-&lt;br /&gt;
| v1.0.0 || [https://sourceforge.net/projects/boofcv/files/v1.0.0 Link] || New version number system. Camera state in bundle adjustment&lt;br /&gt;
|-&lt;br /&gt;
| v0.44 || [https://sourceforge.net/projects/boofcv/files/v0.44 Link] || Android Fragments,  &lt;br /&gt;
|-&lt;br /&gt;
| v0.43.1 || [https://sourceforge.net/projects/boofcv/files/v0.43 Link] || Mesh viewer/rendering, STL files, bug fixes &lt;br /&gt;
|-&lt;br /&gt;
| v0.42 || [https://sourceforge.net/projects/boofcv/files/v0.42 Link] || Bug fixes, new filters, OBJ support&lt;br /&gt;
|-&lt;br /&gt;
| v0.41 || [https://sourceforge.net/projects/boofcv/files/v0.41 Link] || Aztec Code, Android cameras, multi camera calibration, mesh&lt;br /&gt;
|-&lt;br /&gt;
| v0.40.1 || [https://sourceforge.net/projects/boofcv/files/v0.40 Link] || Micro QR Code and strict null enforcement&lt;br /&gt;
|-&lt;br /&gt;
| v0.39.1 || [https://sourceforge.net/projects/boofcv/files/v0.39.1 Link] || Markers (ECoCheck, AruCo), Calibration Apps, Simulation&lt;br /&gt;
|-&lt;br /&gt;
| v0.38 || [https://sourceforge.net/projects/boofcv/files/v0.38 Link] || Better MVS and Scene Recognition&lt;br /&gt;
|-&lt;br /&gt;
| v0.37 || [https://sourceforge.net/projects/boofcv/files/v0.37 Link] || Mutli-View Stereo&lt;br /&gt;
|-&lt;br /&gt;
| v0.36 || [https://sourceforge.net/projects/boofcv/files/v0.36 Link] || Random dot markers, SBA in Visual odometry, visualization&lt;br /&gt;
|-&lt;br /&gt;
| v0.35 || [https://sourceforge.net/projects/boofcv/files/v0.35 Link] || Even better Chessboard, stereo, various&lt;br /&gt;
|-&lt;br /&gt;
| v0.34 || [https://sourceforge.net/projects/boofcv/files/v0.34 Link] || More Concurrency, Chessboard, Lines&lt;br /&gt;
|-&lt;br /&gt;
| v0.33 || [https://sourceforge.net/projects/boofcv/files/v0.33.1 Link] || Concurrency, SFM, QR Fixes&lt;br /&gt;
|-&lt;br /&gt;
| v0.32 || [https://sourceforge.net/projects/boofcv/files/v0.32 Link] || Uncalibrated Stereo&lt;br /&gt;
|-&lt;br /&gt;
| v0.31 || [https://sourceforge.net/projects/boofcv/files/v0.31 Link] || Sparse Bundle Adjustment&lt;br /&gt;
|-&lt;br /&gt;
| v0.30 || [https://sourceforge.net/projects/boofcv/files/v0.30 Link] || Android and SFM&lt;br /&gt;
|-&lt;br /&gt;
| v0.29 || [https://sourceforge.net/projects/boofcv/files/v0.29 Link] || BOverride, Background GMM, GVersion&lt;br /&gt;
|-&lt;br /&gt;
| v0.28 || [https://sourceforge.net/projects/boofcv/files/v0.28 Link] || Fisheye calibration, Hex target, QR Code, polyline&lt;br /&gt;
|-&lt;br /&gt;
| v0.27 || [https://sourceforge.net/projects/boofcv/files/v0.27 Link] || Module name changes, new calib target, new distortion&lt;br /&gt;
|-&lt;br /&gt;
| v0.26 || [https://sourceforge.net/projects/boofcv/files/v0.26 Link] || Critical bug fixes, more examples, improved asymmetric grid&lt;br /&gt;
|-&lt;br /&gt;
| v0.25 || [https://sourceforge.net/projects/boofcv/files/v0.25 Link] || 360 and fisheye support, Deep Learning, circle asym grid, ... etc&lt;br /&gt;
|-&lt;br /&gt;
| v0.24.1 || [https://sourceforge.net/projects/boofcv/files/v0.24.1 Link] || Fixed dependency on a SNAPSHOT &lt;br /&gt;
|-&lt;br /&gt;
| v0.24 || [https://sourceforge.net/projects/boofcv/files/v0.24 Link] || Replaced Xuggler with JavaCV&lt;br /&gt;
|-&lt;br /&gt;
| v0.23 || [https://sourceforge.net/projects/boofcv/files/v0.23 Link] || Refactoring of image names&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Main_Page&amp;diff=3284</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Main_Page&amp;diff=3284"/>
		<updated>2025-03-22T15:55:57Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&lt;br /&gt;
[[File:Boofcv_logo_circles_frontpage.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
BoofCV is an open source library written from scratch for real-time computer vision. Its functionality covers a range of subjects, low-level image processing, camera calibration, feature detection/tracking, structure-from-motion, fiducial detection, and recognition. BoofCV has been released under an Apache  2.0 license for both academic and commercial use.&lt;br /&gt;
&lt;br /&gt;
BoofCV is organized into several packages: &amp;#039;&amp;#039;image processing&amp;#039;&amp;#039;, &amp;#039;&amp;#039;features&amp;#039;&amp;#039;, &amp;#039;&amp;#039;geometric vision&amp;#039;&amp;#039;, &amp;#039;&amp;#039;calibration&amp;#039;&amp;#039;, &amp;#039;&amp;#039;recognition&amp;#039;&amp;#039;,&amp;#039;&amp;#039;visualize&amp;#039;&amp;#039;, and &amp;#039;&amp;#039;IO&amp;#039;&amp;#039;.  &amp;#039;&amp;#039;Image processing&amp;#039;&amp;#039; contains commonly used image processing functions which operate directly on pixels.  &amp;#039;&amp;#039;Features&amp;#039;&amp;#039; contains feature extraction algorithms for use in higher level operations.  &amp;#039;&amp;#039;Calibration&amp;#039;&amp;#039; has routines for determining the camera&amp;#039;s intrinsic and extrinsic parameters.  &amp;#039;&amp;#039;Recognition&amp;#039;&amp;#039; is for recognition and tracking complex visual objects.  &amp;#039;&amp;#039;Geometric vision&amp;#039;&amp;#039; is composed of routines for processing extracted image features using 2D and 3D geometry. &amp;#039;&amp;#039;Visualize&amp;#039;&amp;#039; has routines for rendering and displaying extracted features.  &amp;#039;&amp;#039;IO&amp;#039;&amp;#039; has input and output routines for different data structures.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| &lt;br /&gt;
|-&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/wgPzlokxbXw|300|center}}&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/O_yAdsT8d84|300|center}}&lt;br /&gt;
|-&lt;br /&gt;
! New calibration tools in v0.39&lt;br /&gt;
! Three View Self Calibration&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://www.ninox360.com/calibration-targets 2022-Nov: Create calibration targets in your browser]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://www.ninox360.com/barcode-scanner 2022-Nov: Barcode scanner webapp]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://medium.com/p/35b431fcccf1 2022-Jan: Article on scanning Micro QR Codes]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[[Tutorial_Camera_Calibration|2021-Oct: Camera Calibration Tutorial has been re-written.]]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://youtu.be/RCL5tSt189M 2021-Mar: Stereo Cloud from Mars Perseverance Rover]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:Loose-lips.jpg|125px|link=https://groups.google.com/group/boofcv]] ||&lt;br /&gt;
{| width=&amp;quot;400pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Current Release: &amp;#039;&amp;#039;v1.2.0&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Date: &amp;#039;&amp;#039;March 22, 2025&amp;#039;&amp;#039; &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://github.com/lessthanoptimal/BoofCV/blob/v1.2.0/change.txt Change Log]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://youtu.be/BbTPQ9mIoQU Video Summary v0.38]&lt;br /&gt;
|}&lt;br /&gt;
| [[File:Boofcv_bug_propaganda_poster_small.jpg|125px|link=https://github.com/lessthanoptimal/BoofCV/issues]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| width=&amp;quot;600pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; |  [[File:Ninox360_icon_logo_moto.png|400px|link=https://www.ninox360.com]]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | A start up from the creators of BoofCV.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-help-icon.png|100px|link=[[Manual]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Manual]]&lt;br /&gt;
|-&lt;br /&gt;
| [[FAQ | FAQ]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.boofcv.org/javadoc/ JavaDoc]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCV/issues Report Bug]&lt;br /&gt;
|-&lt;br /&gt;
| [https://groups.google.com/group/boofcv Message Board]&lt;br /&gt;
|-&lt;br /&gt;
| [[Papers and Reports| Papers/Reports]]&lt;br /&gt;
|} &lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-binary-icon.png|100px|link=[https://github.com/lessthanoptimal/BoofCV Source Code]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Download|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.youtube.com/user/BoofCV/videos Videos]&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Bounties| Bounties ]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Contributing|Contribute]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCPP BoofCPP]&lt;br /&gt;
|} &lt;br /&gt;
| width&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-graph-icon.png|100px|link=[[Performance:BoofCV]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Performance:BoofCV|Performance]]&lt;br /&gt;
|-&lt;br /&gt;
| [[BoofCV Roadmap | Road Map]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Validation:Algorithms | Validation]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Projects_Using_BoofCV | Users ]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Acknowledgements|Acknowledgements]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;SPAN STYLE=&amp;quot;font-size: 14pt;text-align:center&amp;quot;&amp;gt;Prebuild Stand Alone Applications&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Examples_and_Demonstrations|Examples / Demonstrations]] || Example and demonstration applications&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create QR Code|QR Code Generator]] || Create and print QR Codes&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Square_Binary|Square Fiducials]] || Binary/Image Square Fiducial Generator &lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Calibration_Fiducials|Calibration Targets]] || Calibration Target Generator&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Camera_Calibration|Calibration]] || Camera Calibration Application&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Undistort|Lens Undistortion]] ||  Batch Removal of Lens Distortion&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Downsize|Image Downsize]] ||  Batch Image Down Sampling with minimal aliasing&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
| colspan=5 style=&amp;quot;background-color:#ffffdd;&amp;quot; align=&amp;quot;center&amp;quot; |&lt;br /&gt;
== Capability Summary ==&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Image Processing &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Feature &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Recognition&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Geometric &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Integration&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Image Convolution || [[Example_Convolution|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Image Derivatives || [[Example_Image_Derivative|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Thresholding || [[Example_Thresholding|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Ops || [[Example_Binary_Image|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Space || [[Example_Color_Space|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interpolation || [[Example_Interpolation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Deformation || [[Example_Key_Point_Based_Deformation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Blur || [[Example_Image_Blur|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Enhancement || [[Example_Image_Enhancement|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Noise Removal || [[Example_Wavelet_Noise_Removal|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fourier Transform || [[Example_Discrete_Fourier_Transform|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Wavelet Decomposition || &lt;br /&gt;
|- &lt;br /&gt;
| Discrete Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Float Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Scale Space Image || &lt;br /&gt;
|-&lt;br /&gt;
| Equirectangular || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye Cameras || [[Example_Fisheye_To_Pinhole|Example]]&lt;br /&gt;
|&lt;br /&gt;
|} &lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Black Polygons || [[Example_Detect_Black_Polygons|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Black Ellipses || [[Example_Detect_Black_Ellipses|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interest Points || [[Example_Detect_Interest_Points|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Line Detection || [[Example_Detect_Lines|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Motion Detection || [[Example_Background_Moving_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Contours || [[Example_Binary_Image|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Polygon Fitting || [[Example_Fit_Polygon|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Ellipse Fitting || [[Example_Fit_Ellipse|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Template Matching || [[Example_Template_Matching|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Interest Points || [[Example_Detect_Describe_Interface|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Dense Features || [[Example_Dense_Image_Features|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Point Tracking || [[Example_Track_Point_Features|Example]]&lt;br /&gt;
|-  &lt;br /&gt;
| Non-max Suppression || [[Example_Non_Maximum_Suppression|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Dense Optical Flow || [[Example_Dense_Optical_Flow|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Superpixels || [[Example_Superpixels|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Color Segmentation || [[Example_Color_Segmentation|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Scene Recognition || [[Example_Scene_Recognition|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Image Lookup || [[Example_Color_Histogram_Lookup|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| KNN Classifier || [[Example_Scene_Classification|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| CNN Classifiers || [[Example_Image_Classification|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Object Tracking || [[Example_Tracker_Object|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fiducials || [[Tutorial_Fiducials|Tutorial]]&lt;br /&gt;
|-&lt;br /&gt;
| QR Codes || [[Tutorial_QRCodes|Tutorial]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| SFM || [[Tutorial_Geometric_Vision|Tutorial]] &lt;br /&gt;
|- &lt;br /&gt;
| Camera Calibration || [[Tutorial_Camera_Calibration|Tutorial]]&lt;br /&gt;
|- &lt;br /&gt;
| Mono Calibration || [[Example_Calibrate_Planar_Mono|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Fisheye Calibration || [[Example_Calibrate_Planar_Fisheye|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Stereo Calibration || [[Example_Calibrate_Planar_Stereo|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Remove Distortion || [[Example_Remove_Lens_Distortion|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Equi to Pinhole || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye to Equi|| [[Example_Fisheye_To_Equirectangular|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Bundle Adjustment || [[Example Sparse Bundle Adjustment|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| 3D Stereo Cloud || [[Example_Stereo_Disparity_3D|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Monocular Stereo || [[Example_Stereo_Single_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Uncalibrated Stereo || [[Example_Three_View_Stereo_Uncalibrated|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Multi Baseline Stereo || [[Example_Multi_Baseline_Stereo|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Scene Reconstruction || [[Example_Multiview_Reconstruction_Dense|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Video Stabilization || [[Example_Video_Stabilization|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Video Mosaic || [[Example_Video_Mosaic|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Stereo || [[Example_Stereo_Visual_Odometry|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Mono Plane || [[Example_Visual_Odometry_Monocular_Plane|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: RGB-D || [[Example_Visual_Odometry_Depth|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
| Visualization&lt;br /&gt;
|-&lt;br /&gt;
| [[Android_support|Android]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Videos and Webcams|Video]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Kinect|Kinect]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Processing|Processing]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/PyBoof Python]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Main_Page&amp;diff=3283</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Main_Page&amp;diff=3283"/>
		<updated>2025-03-07T20:46:16Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&lt;br /&gt;
[[File:Boofcv_logo_circles_frontpage.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
BoofCV is an open source library written from scratch for real-time computer vision. Its functionality covers a range of subjects, low-level image processing, camera calibration, feature detection/tracking, structure-from-motion, fiducial detection, and recognition. BoofCV has been released under an Apache  2.0 license for both academic and commercial use.&lt;br /&gt;
&lt;br /&gt;
BoofCV is organized into several packages: &amp;#039;&amp;#039;image processing&amp;#039;&amp;#039;, &amp;#039;&amp;#039;features&amp;#039;&amp;#039;, &amp;#039;&amp;#039;geometric vision&amp;#039;&amp;#039;, &amp;#039;&amp;#039;calibration&amp;#039;&amp;#039;, &amp;#039;&amp;#039;recognition&amp;#039;&amp;#039;,&amp;#039;&amp;#039;visualize&amp;#039;&amp;#039;, and &amp;#039;&amp;#039;IO&amp;#039;&amp;#039;.  &amp;#039;&amp;#039;Image processing&amp;#039;&amp;#039; contains commonly used image processing functions which operate directly on pixels.  &amp;#039;&amp;#039;Features&amp;#039;&amp;#039; contains feature extraction algorithms for use in higher level operations.  &amp;#039;&amp;#039;Calibration&amp;#039;&amp;#039; has routines for determining the camera&amp;#039;s intrinsic and extrinsic parameters.  &amp;#039;&amp;#039;Recognition&amp;#039;&amp;#039; is for recognition and tracking complex visual objects.  &amp;#039;&amp;#039;Geometric vision&amp;#039;&amp;#039; is composed of routines for processing extracted image features using 2D and 3D geometry. &amp;#039;&amp;#039;Visualize&amp;#039;&amp;#039; has routines for rendering and displaying extracted features.  &amp;#039;&amp;#039;IO&amp;#039;&amp;#039; has input and output routines for different data structures.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| &lt;br /&gt;
|-&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/wgPzlokxbXw|300|center}}&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/O_yAdsT8d84|300|center}}&lt;br /&gt;
|-&lt;br /&gt;
! New calibration tools in v0.39&lt;br /&gt;
! Three View Self Calibration&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://www.ninox360.com/calibration-targets 2022-Nov: Create calibration targets in your browser]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://www.ninox360.com/barcode-scanner 2022-Nov: Barcode scanner webapp]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://medium.com/p/35b431fcccf1 2022-Jan: Article on scanning Micro QR Codes]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[[Tutorial_Camera_Calibration|2021-Oct: Camera Calibration Tutorial has been re-written.]]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://youtu.be/RCL5tSt189M 2021-Mar: Stereo Cloud from Mars Perseverance Rover]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:Loose-lips.jpg|125px|link=https://groups.google.com/group/boofcv]] ||&lt;br /&gt;
{| width=&amp;quot;400pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Current Release: &amp;#039;&amp;#039;v1.1.8&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Date: &amp;#039;&amp;#039;March 6, 2025&amp;#039;&amp;#039; &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://github.com/lessthanoptimal/BoofCV/blob/v1.1.8/change.txt Change Log]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://youtu.be/BbTPQ9mIoQU Video Summary v0.38]&lt;br /&gt;
|}&lt;br /&gt;
| [[File:Boofcv_bug_propaganda_poster_small.jpg|125px|link=https://github.com/lessthanoptimal/BoofCV/issues]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| width=&amp;quot;600pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; |  [[File:Ninox360_icon_logo_moto.png|400px|link=https://www.ninox360.com]]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | A start up from the creators of BoofCV.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-help-icon.png|100px|link=[[Manual]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Manual]]&lt;br /&gt;
|-&lt;br /&gt;
| [[FAQ | FAQ]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.boofcv.org/javadoc/ JavaDoc]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCV/issues Report Bug]&lt;br /&gt;
|-&lt;br /&gt;
| [https://groups.google.com/group/boofcv Message Board]&lt;br /&gt;
|-&lt;br /&gt;
| [[Papers and Reports| Papers/Reports]]&lt;br /&gt;
|} &lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-binary-icon.png|100px|link=[https://github.com/lessthanoptimal/BoofCV Source Code]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Download|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.youtube.com/user/BoofCV/videos Videos]&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Bounties| Bounties ]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Contributing|Contribute]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCPP BoofCPP]&lt;br /&gt;
|} &lt;br /&gt;
| width&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-graph-icon.png|100px|link=[[Performance:BoofCV]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Performance:BoofCV|Performance]]&lt;br /&gt;
|-&lt;br /&gt;
| [[BoofCV Roadmap | Road Map]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Validation:Algorithms | Validation]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Projects_Using_BoofCV | Users ]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Acknowledgements|Acknowledgements]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;SPAN STYLE=&amp;quot;font-size: 14pt;text-align:center&amp;quot;&amp;gt;Prebuild Stand Alone Applications&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Examples_and_Demonstrations|Examples / Demonstrations]] || Example and demonstration applications&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create QR Code|QR Code Generator]] || Create and print QR Codes&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Square_Binary|Square Fiducials]] || Binary/Image Square Fiducial Generator &lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Calibration_Fiducials|Calibration Targets]] || Calibration Target Generator&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Camera_Calibration|Calibration]] || Camera Calibration Application&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Undistort|Lens Undistortion]] ||  Batch Removal of Lens Distortion&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Downsize|Image Downsize]] ||  Batch Image Down Sampling with minimal aliasing&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
| colspan=5 style=&amp;quot;background-color:#ffffdd;&amp;quot; align=&amp;quot;center&amp;quot; |&lt;br /&gt;
== Capability Summary ==&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Image Processing &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Feature &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Recognition&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Geometric &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Integration&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Image Convolution || [[Example_Convolution|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Image Derivatives || [[Example_Image_Derivative|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Thresholding || [[Example_Thresholding|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Ops || [[Example_Binary_Image|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Space || [[Example_Color_Space|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interpolation || [[Example_Interpolation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Deformation || [[Example_Key_Point_Based_Deformation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Blur || [[Example_Image_Blur|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Enhancement || [[Example_Image_Enhancement|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Noise Removal || [[Example_Wavelet_Noise_Removal|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fourier Transform || [[Example_Discrete_Fourier_Transform|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Wavelet Decomposition || &lt;br /&gt;
|- &lt;br /&gt;
| Discrete Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Float Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Scale Space Image || &lt;br /&gt;
|-&lt;br /&gt;
| Equirectangular || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye Cameras || [[Example_Fisheye_To_Pinhole|Example]]&lt;br /&gt;
|&lt;br /&gt;
|} &lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Black Polygons || [[Example_Detect_Black_Polygons|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Black Ellipses || [[Example_Detect_Black_Ellipses|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interest Points || [[Example_Detect_Interest_Points|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Line Detection || [[Example_Detect_Lines|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Motion Detection || [[Example_Background_Moving_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Contours || [[Example_Binary_Image|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Polygon Fitting || [[Example_Fit_Polygon|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Ellipse Fitting || [[Example_Fit_Ellipse|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Template Matching || [[Example_Template_Matching|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Interest Points || [[Example_Detect_Describe_Interface|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Dense Features || [[Example_Dense_Image_Features|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Point Tracking || [[Example_Track_Point_Features|Example]]&lt;br /&gt;
|-  &lt;br /&gt;
| Non-max Suppression || [[Example_Non_Maximum_Suppression|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Dense Optical Flow || [[Example_Dense_Optical_Flow|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Superpixels || [[Example_Superpixels|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Color Segmentation || [[Example_Color_Segmentation|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Scene Recognition || [[Example_Scene_Recognition|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Image Lookup || [[Example_Color_Histogram_Lookup|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| KNN Classifier || [[Example_Scene_Classification|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| CNN Classifiers || [[Example_Image_Classification|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Object Tracking || [[Example_Tracker_Object|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fiducials || [[Tutorial_Fiducials|Tutorial]]&lt;br /&gt;
|-&lt;br /&gt;
| QR Codes || [[Tutorial_QRCodes|Tutorial]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| SFM || [[Tutorial_Geometric_Vision|Tutorial]] &lt;br /&gt;
|- &lt;br /&gt;
| Camera Calibration || [[Tutorial_Camera_Calibration|Tutorial]]&lt;br /&gt;
|- &lt;br /&gt;
| Mono Calibration || [[Example_Calibrate_Planar_Mono|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Fisheye Calibration || [[Example_Calibrate_Planar_Fisheye|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Stereo Calibration || [[Example_Calibrate_Planar_Stereo|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Remove Distortion || [[Example_Remove_Lens_Distortion|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Equi to Pinhole || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye to Equi|| [[Example_Fisheye_To_Equirectangular|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Bundle Adjustment || [[Example Sparse Bundle Adjustment|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| 3D Stereo Cloud || [[Example_Stereo_Disparity_3D|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Monocular Stereo || [[Example_Stereo_Single_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Uncalibrated Stereo || [[Example_Three_View_Stereo_Uncalibrated|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Multi Baseline Stereo || [[Example_Multi_Baseline_Stereo|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Scene Reconstruction || [[Example_Multiview_Reconstruction_Dense|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Video Stabilization || [[Example_Video_Stabilization|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Video Mosaic || [[Example_Video_Mosaic|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Stereo || [[Example_Stereo_Visual_Odometry|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Mono Plane || [[Example_Visual_Odometry_Monocular_Plane|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: RGB-D || [[Example_Visual_Odometry_Depth|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
| Visualization&lt;br /&gt;
|-&lt;br /&gt;
| [[Android_support|Android]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Videos and Webcams|Video]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Kinect|Kinect]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Processing|Processing]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/PyBoof Python]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Main_Page&amp;diff=3282</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Main_Page&amp;diff=3282"/>
		<updated>2024-09-06T18:22:22Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&lt;br /&gt;
[[File:Boofcv_logo_circles_frontpage.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
BoofCV is an open source library written from scratch for real-time computer vision. Its functionality covers a range of subjects, low-level image processing, camera calibration, feature detection/tracking, structure-from-motion, fiducial detection, and recognition. BoofCV has been released under an Apache  2.0 license for both academic and commercial use.&lt;br /&gt;
&lt;br /&gt;
BoofCV is organized into several packages: &amp;#039;&amp;#039;image processing&amp;#039;&amp;#039;, &amp;#039;&amp;#039;features&amp;#039;&amp;#039;, &amp;#039;&amp;#039;geometric vision&amp;#039;&amp;#039;, &amp;#039;&amp;#039;calibration&amp;#039;&amp;#039;, &amp;#039;&amp;#039;recognition&amp;#039;&amp;#039;,&amp;#039;&amp;#039;visualize&amp;#039;&amp;#039;, and &amp;#039;&amp;#039;IO&amp;#039;&amp;#039;.  &amp;#039;&amp;#039;Image processing&amp;#039;&amp;#039; contains commonly used image processing functions which operate directly on pixels.  &amp;#039;&amp;#039;Features&amp;#039;&amp;#039; contains feature extraction algorithms for use in higher level operations.  &amp;#039;&amp;#039;Calibration&amp;#039;&amp;#039; has routines for determining the camera&amp;#039;s intrinsic and extrinsic parameters.  &amp;#039;&amp;#039;Recognition&amp;#039;&amp;#039; is for recognition and tracking complex visual objects.  &amp;#039;&amp;#039;Geometric vision&amp;#039;&amp;#039; is composed of routines for processing extracted image features using 2D and 3D geometry. &amp;#039;&amp;#039;Visualize&amp;#039;&amp;#039; has routines for rendering and displaying extracted features.  &amp;#039;&amp;#039;IO&amp;#039;&amp;#039; has input and output routines for different data structures.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| &lt;br /&gt;
|-&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/wgPzlokxbXw|300|center}}&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/O_yAdsT8d84|300|center}}&lt;br /&gt;
|-&lt;br /&gt;
! New calibration tools in v0.39&lt;br /&gt;
! Three View Self Calibration&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://www.ninox360.com/calibration-targets 2022-Nov: Create calibration targets in your browser]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://www.ninox360.com/barcode-scanner 2022-Nov: Barcode scanner webapp]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://medium.com/p/35b431fcccf1 2022-Jan: Article on scanning Micro QR Codes]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[[Tutorial_Camera_Calibration|2021-Oct: Camera Calibration Tutorial has been re-written.]]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://youtu.be/RCL5tSt189M 2021-Mar: Stereo Cloud from Mars Perseverance Rover]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:Loose-lips.jpg|125px|link=https://groups.google.com/group/boofcv]] ||&lt;br /&gt;
{| width=&amp;quot;400pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Current Release: &amp;#039;&amp;#039;v1.1.6&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Date: &amp;#039;&amp;#039;September 6, 2024&amp;#039;&amp;#039; &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://github.com/lessthanoptimal/BoofCV/blob/v1.1.6/change.txt Change Log]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://youtu.be/BbTPQ9mIoQU Video Summary v0.38]&lt;br /&gt;
|}&lt;br /&gt;
| [[File:Boofcv_bug_propaganda_poster_small.jpg|125px|link=https://github.com/lessthanoptimal/BoofCV/issues]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| width=&amp;quot;600pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; |  [[File:Ninox360_icon_logo_moto.png|400px|link=https://www.ninox360.com]]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | A start up from the creators of BoofCV.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-help-icon.png|100px|link=[[Manual]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Manual]]&lt;br /&gt;
|-&lt;br /&gt;
| [[FAQ | FAQ]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.boofcv.org/javadoc/ JavaDoc]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCV/issues Report Bug]&lt;br /&gt;
|-&lt;br /&gt;
| [https://groups.google.com/group/boofcv Message Board]&lt;br /&gt;
|-&lt;br /&gt;
| [[Papers and Reports| Papers/Reports]]&lt;br /&gt;
|} &lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-binary-icon.png|100px|link=[https://github.com/lessthanoptimal/BoofCV Source Code]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Download|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.youtube.com/user/BoofCV/videos Videos]&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Bounties| Bounties ]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Contributing|Contribute]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCPP BoofCPP]&lt;br /&gt;
|} &lt;br /&gt;
| width&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-graph-icon.png|100px|link=[[Performance:BoofCV]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Performance:BoofCV|Performance]]&lt;br /&gt;
|-&lt;br /&gt;
| [[BoofCV Roadmap | Road Map]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Validation:Algorithms | Validation]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Projects_Using_BoofCV | Users ]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Acknowledgements|Acknowledgements]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;SPAN STYLE=&amp;quot;font-size: 14pt;text-align:center&amp;quot;&amp;gt;Prebuild Stand Alone Applications&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Examples_and_Demonstrations|Examples / Demonstrations]] || Example and demonstration applications&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create QR Code|QR Code Generator]] || Create and print QR Codes&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Square_Binary|Square Fiducials]] || Binary/Image Square Fiducial Generator &lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Calibration_Fiducials|Calibration Targets]] || Calibration Target Generator&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Camera_Calibration|Calibration]] || Camera Calibration Application&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Undistort|Lens Undistortion]] ||  Batch Removal of Lens Distortion&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Downsize|Image Downsize]] ||  Batch Image Down Sampling with minimal aliasing&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
| colspan=5 style=&amp;quot;background-color:#ffffdd;&amp;quot; align=&amp;quot;center&amp;quot; |&lt;br /&gt;
== Capability Summary ==&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Image Processing &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Feature &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Recognition&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Geometric &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Integration&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Image Convolution || [[Example_Convolution|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Image Derivatives || [[Example_Image_Derivative|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Thresholding || [[Example_Thresholding|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Ops || [[Example_Binary_Image|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Space || [[Example_Color_Space|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interpolation || [[Example_Interpolation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Deformation || [[Example_Key_Point_Based_Deformation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Blur || [[Example_Image_Blur|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Enhancement || [[Example_Image_Enhancement|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Noise Removal || [[Example_Wavelet_Noise_Removal|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fourier Transform || [[Example_Discrete_Fourier_Transform|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Wavelet Decomposition || &lt;br /&gt;
|- &lt;br /&gt;
| Discrete Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Float Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Scale Space Image || &lt;br /&gt;
|-&lt;br /&gt;
| Equirectangular || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye Cameras || [[Example_Fisheye_To_Pinhole|Example]]&lt;br /&gt;
|&lt;br /&gt;
|} &lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Black Polygons || [[Example_Detect_Black_Polygons|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Black Ellipses || [[Example_Detect_Black_Ellipses|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interest Points || [[Example_Detect_Interest_Points|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Line Detection || [[Example_Detect_Lines|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Motion Detection || [[Example_Background_Moving_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Contours || [[Example_Binary_Image|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Polygon Fitting || [[Example_Fit_Polygon|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Ellipse Fitting || [[Example_Fit_Ellipse|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Template Matching || [[Example_Template_Matching|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Interest Points || [[Example_Detect_Describe_Interface|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Dense Features || [[Example_Dense_Image_Features|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Point Tracking || [[Example_Track_Point_Features|Example]]&lt;br /&gt;
|-  &lt;br /&gt;
| Non-max Suppression || [[Example_Non_Maximum_Suppression|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Dense Optical Flow || [[Example_Dense_Optical_Flow|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Superpixels || [[Example_Superpixels|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Color Segmentation || [[Example_Color_Segmentation|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Scene Recognition || [[Example_Scene_Recognition|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Image Lookup || [[Example_Color_Histogram_Lookup|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| KNN Classifier || [[Example_Scene_Classification|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| CNN Classifiers || [[Example_Image_Classification|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Object Tracking || [[Example_Tracker_Object|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fiducials || [[Tutorial_Fiducials|Tutorial]]&lt;br /&gt;
|-&lt;br /&gt;
| QR Codes || [[Tutorial_QRCodes|Tutorial]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| SFM || [[Tutorial_Geometric_Vision|Tutorial]] &lt;br /&gt;
|- &lt;br /&gt;
| Camera Calibration || [[Tutorial_Camera_Calibration|Tutorial]]&lt;br /&gt;
|- &lt;br /&gt;
| Mono Calibration || [[Example_Calibrate_Planar_Mono|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Fisheye Calibration || [[Example_Calibrate_Planar_Fisheye|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Stereo Calibration || [[Example_Calibrate_Planar_Stereo|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Remove Distortion || [[Example_Remove_Lens_Distortion|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Equi to Pinhole || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye to Equi|| [[Example_Fisheye_To_Equirectangular|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Bundle Adjustment || [[Example Sparse Bundle Adjustment|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| 3D Stereo Cloud || [[Example_Stereo_Disparity_3D|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Monocular Stereo || [[Example_Stereo_Single_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Uncalibrated Stereo || [[Example_Three_View_Stereo_Uncalibrated|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Multi Baseline Stereo || [[Example_Multi_Baseline_Stereo|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Scene Reconstruction || [[Example_Multiview_Reconstruction_Dense|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Video Stabilization || [[Example_Video_Stabilization|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Video Mosaic || [[Example_Video_Mosaic|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Stereo || [[Example_Stereo_Visual_Odometry|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Mono Plane || [[Example_Visual_Odometry_Monocular_Plane|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: RGB-D || [[Example_Visual_Odometry_Depth|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
| Visualization&lt;br /&gt;
|-&lt;br /&gt;
| [[Android_support|Android]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Videos and Webcams|Video]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Kinect|Kinect]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Processing|Processing]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/PyBoof Python]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Main_Page&amp;diff=3281</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Main_Page&amp;diff=3281"/>
		<updated>2024-06-27T16:35:59Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&lt;br /&gt;
[[File:Boofcv_logo_circles_frontpage.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
BoofCV is an open source library written from scratch for real-time computer vision. Its functionality covers a range of subjects, low-level image processing, camera calibration, feature detection/tracking, structure-from-motion, fiducial detection, and recognition. BoofCV has been released under an Apache  2.0 license for both academic and commercial use.&lt;br /&gt;
&lt;br /&gt;
BoofCV is organized into several packages: &amp;#039;&amp;#039;image processing&amp;#039;&amp;#039;, &amp;#039;&amp;#039;features&amp;#039;&amp;#039;, &amp;#039;&amp;#039;geometric vision&amp;#039;&amp;#039;, &amp;#039;&amp;#039;calibration&amp;#039;&amp;#039;, &amp;#039;&amp;#039;recognition&amp;#039;&amp;#039;,&amp;#039;&amp;#039;visualize&amp;#039;&amp;#039;, and &amp;#039;&amp;#039;IO&amp;#039;&amp;#039;.  &amp;#039;&amp;#039;Image processing&amp;#039;&amp;#039; contains commonly used image processing functions which operate directly on pixels.  &amp;#039;&amp;#039;Features&amp;#039;&amp;#039; contains feature extraction algorithms for use in higher level operations.  &amp;#039;&amp;#039;Calibration&amp;#039;&amp;#039; has routines for determining the camera&amp;#039;s intrinsic and extrinsic parameters.  &amp;#039;&amp;#039;Recognition&amp;#039;&amp;#039; is for recognition and tracking complex visual objects.  &amp;#039;&amp;#039;Geometric vision&amp;#039;&amp;#039; is composed of routines for processing extracted image features using 2D and 3D geometry. &amp;#039;&amp;#039;Visualize&amp;#039;&amp;#039; has routines for rendering and displaying extracted features.  &amp;#039;&amp;#039;IO&amp;#039;&amp;#039; has input and output routines for different data structures.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| &lt;br /&gt;
|-&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/wgPzlokxbXw|300|center}}&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/O_yAdsT8d84|300|center}}&lt;br /&gt;
|-&lt;br /&gt;
! New calibration tools in v0.39&lt;br /&gt;
! Three View Self Calibration&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://www.ninox360.com/calibration-targets 2022-Nov: Create calibration targets in your browser]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://www.ninox360.com/barcode-scanner 2022-Nov: Barcode scanner webapp]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://medium.com/p/35b431fcccf1 2022-Jan: Article on scanning Micro QR Codes]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[[Tutorial_Camera_Calibration|2021-Oct: Camera Calibration Tutorial has been re-written.]]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://youtu.be/RCL5tSt189M 2021-Mar: Stereo Cloud from Mars Perseverance Rover]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:Loose-lips.jpg|125px|link=https://groups.google.com/group/boofcv]] ||&lt;br /&gt;
{| width=&amp;quot;400pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Current Release: &amp;#039;&amp;#039;v1.1.5&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Date: &amp;#039;&amp;#039;June 27, 2024&amp;#039;&amp;#039; &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://github.com/lessthanoptimal/BoofCV/blob/v1.1.4/change.txt Change Log]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://youtu.be/BbTPQ9mIoQU Video Summary v0.38]&lt;br /&gt;
|}&lt;br /&gt;
| [[File:Boofcv_bug_propaganda_poster_small.jpg|125px|link=https://github.com/lessthanoptimal/BoofCV/issues]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| width=&amp;quot;600pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; |  [[File:Ninox360_icon_logo_moto.png|400px|link=https://www.ninox360.com]]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | A start up from the creators of BoofCV.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-help-icon.png|100px|link=[[Manual]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Manual]]&lt;br /&gt;
|-&lt;br /&gt;
| [[FAQ | FAQ]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.boofcv.org/javadoc/ JavaDoc]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCV/issues Report Bug]&lt;br /&gt;
|-&lt;br /&gt;
| [https://groups.google.com/group/boofcv Message Board]&lt;br /&gt;
|-&lt;br /&gt;
| [[Papers and Reports| Papers/Reports]]&lt;br /&gt;
|} &lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-binary-icon.png|100px|link=[https://github.com/lessthanoptimal/BoofCV Source Code]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Download|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.youtube.com/user/BoofCV/videos Videos]&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Bounties| Bounties ]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Contributing|Contribute]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCPP BoofCPP]&lt;br /&gt;
|} &lt;br /&gt;
| width&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-graph-icon.png|100px|link=[[Performance:BoofCV]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Performance:BoofCV|Performance]]&lt;br /&gt;
|-&lt;br /&gt;
| [[BoofCV Roadmap | Road Map]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Validation:Algorithms | Validation]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Projects_Using_BoofCV | Users ]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Acknowledgements|Acknowledgements]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;SPAN STYLE=&amp;quot;font-size: 14pt;text-align:center&amp;quot;&amp;gt;Prebuild Stand Alone Applications&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Examples_and_Demonstrations|Examples / Demonstrations]] || Example and demonstration applications&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create QR Code|QR Code Generator]] || Create and print QR Codes&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Square_Binary|Square Fiducials]] || Binary/Image Square Fiducial Generator &lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Calibration_Fiducials|Calibration Targets]] || Calibration Target Generator&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Camera_Calibration|Calibration]] || Camera Calibration Application&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Undistort|Lens Undistortion]] ||  Batch Removal of Lens Distortion&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Downsize|Image Downsize]] ||  Batch Image Down Sampling with minimal aliasing&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
| colspan=5 style=&amp;quot;background-color:#ffffdd;&amp;quot; align=&amp;quot;center&amp;quot; |&lt;br /&gt;
== Capability Summary ==&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Image Processing &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Feature &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Recognition&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Geometric &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Integration&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Image Convolution || [[Example_Convolution|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Image Derivatives || [[Example_Image_Derivative|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Thresholding || [[Example_Thresholding|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Ops || [[Example_Binary_Image|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Space || [[Example_Color_Space|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interpolation || [[Example_Interpolation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Deformation || [[Example_Key_Point_Based_Deformation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Blur || [[Example_Image_Blur|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Enhancement || [[Example_Image_Enhancement|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Noise Removal || [[Example_Wavelet_Noise_Removal|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fourier Transform || [[Example_Discrete_Fourier_Transform|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Wavelet Decomposition || &lt;br /&gt;
|- &lt;br /&gt;
| Discrete Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Float Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Scale Space Image || &lt;br /&gt;
|-&lt;br /&gt;
| Equirectangular || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye Cameras || [[Example_Fisheye_To_Pinhole|Example]]&lt;br /&gt;
|&lt;br /&gt;
|} &lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Black Polygons || [[Example_Detect_Black_Polygons|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Black Ellipses || [[Example_Detect_Black_Ellipses|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interest Points || [[Example_Detect_Interest_Points|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Line Detection || [[Example_Detect_Lines|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Motion Detection || [[Example_Background_Moving_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Contours || [[Example_Binary_Image|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Polygon Fitting || [[Example_Fit_Polygon|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Ellipse Fitting || [[Example_Fit_Ellipse|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Template Matching || [[Example_Template_Matching|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Interest Points || [[Example_Detect_Describe_Interface|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Dense Features || [[Example_Dense_Image_Features|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Point Tracking || [[Example_Track_Point_Features|Example]]&lt;br /&gt;
|-  &lt;br /&gt;
| Non-max Suppression || [[Example_Non_Maximum_Suppression|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Dense Optical Flow || [[Example_Dense_Optical_Flow|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Superpixels || [[Example_Superpixels|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Color Segmentation || [[Example_Color_Segmentation|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Scene Recognition || [[Example_Scene_Recognition|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Image Lookup || [[Example_Color_Histogram_Lookup|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| KNN Classifier || [[Example_Scene_Classification|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| CNN Classifiers || [[Example_Image_Classification|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Object Tracking || [[Example_Tracker_Object|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fiducials || [[Tutorial_Fiducials|Tutorial]]&lt;br /&gt;
|-&lt;br /&gt;
| QR Codes || [[Tutorial_QRCodes|Tutorial]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| SFM || [[Tutorial_Geometric_Vision|Tutorial]] &lt;br /&gt;
|- &lt;br /&gt;
| Camera Calibration || [[Tutorial_Camera_Calibration|Tutorial]]&lt;br /&gt;
|- &lt;br /&gt;
| Mono Calibration || [[Example_Calibrate_Planar_Mono|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Fisheye Calibration || [[Example_Calibrate_Planar_Fisheye|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Stereo Calibration || [[Example_Calibrate_Planar_Stereo|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Remove Distortion || [[Example_Remove_Lens_Distortion|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Equi to Pinhole || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye to Equi|| [[Example_Fisheye_To_Equirectangular|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Bundle Adjustment || [[Example Sparse Bundle Adjustment|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| 3D Stereo Cloud || [[Example_Stereo_Disparity_3D|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Monocular Stereo || [[Example_Stereo_Single_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Uncalibrated Stereo || [[Example_Three_View_Stereo_Uncalibrated|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Multi Baseline Stereo || [[Example_Multi_Baseline_Stereo|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Scene Reconstruction || [[Example_Multiview_Reconstruction_Dense|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Video Stabilization || [[Example_Video_Stabilization|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Video Mosaic || [[Example_Video_Mosaic|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Stereo || [[Example_Stereo_Visual_Odometry|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Mono Plane || [[Example_Visual_Odometry_Monocular_Plane|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: RGB-D || [[Example_Visual_Odometry_Depth|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
| Visualization&lt;br /&gt;
|-&lt;br /&gt;
| [[Android_support|Android]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Videos and Webcams|Video]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Kinect|Kinect]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Processing|Processing]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/PyBoof Python]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Main_Page&amp;diff=3280</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Main_Page&amp;diff=3280"/>
		<updated>2024-05-14T14:39:34Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&lt;br /&gt;
[[File:Boofcv_logo_circles_frontpage.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
BoofCV is an open source library written from scratch for real-time computer vision. Its functionality covers a range of subjects, low-level image processing, camera calibration, feature detection/tracking, structure-from-motion, fiducial detection, and recognition. BoofCV has been released under an Apache  2.0 license for both academic and commercial use.&lt;br /&gt;
&lt;br /&gt;
BoofCV is organized into several packages: &amp;#039;&amp;#039;image processing&amp;#039;&amp;#039;, &amp;#039;&amp;#039;features&amp;#039;&amp;#039;, &amp;#039;&amp;#039;geometric vision&amp;#039;&amp;#039;, &amp;#039;&amp;#039;calibration&amp;#039;&amp;#039;, &amp;#039;&amp;#039;recognition&amp;#039;&amp;#039;,&amp;#039;&amp;#039;visualize&amp;#039;&amp;#039;, and &amp;#039;&amp;#039;IO&amp;#039;&amp;#039;.  &amp;#039;&amp;#039;Image processing&amp;#039;&amp;#039; contains commonly used image processing functions which operate directly on pixels.  &amp;#039;&amp;#039;Features&amp;#039;&amp;#039; contains feature extraction algorithms for use in higher level operations.  &amp;#039;&amp;#039;Calibration&amp;#039;&amp;#039; has routines for determining the camera&amp;#039;s intrinsic and extrinsic parameters.  &amp;#039;&amp;#039;Recognition&amp;#039;&amp;#039; is for recognition and tracking complex visual objects.  &amp;#039;&amp;#039;Geometric vision&amp;#039;&amp;#039; is composed of routines for processing extracted image features using 2D and 3D geometry. &amp;#039;&amp;#039;Visualize&amp;#039;&amp;#039; has routines for rendering and displaying extracted features.  &amp;#039;&amp;#039;IO&amp;#039;&amp;#039; has input and output routines for different data structures.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| &lt;br /&gt;
|-&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/wgPzlokxbXw|300|center}}&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/O_yAdsT8d84|300|center}}&lt;br /&gt;
|-&lt;br /&gt;
! New calibration tools in v0.39&lt;br /&gt;
! Three View Self Calibration&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://www.ninox360.com/calibration-targets 2022-Nov: Create calibration targets in your browser]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://www.ninox360.com/barcode-scanner 2022-Nov: Barcode scanner webapp]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://medium.com/p/35b431fcccf1 2022-Jan: Article on scanning Micro QR Codes]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[[Tutorial_Camera_Calibration|2021-Oct: Camera Calibration Tutorial has been re-written.]]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://youtu.be/RCL5tSt189M 2021-Mar: Stereo Cloud from Mars Perseverance Rover]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:Loose-lips.jpg|125px|link=https://groups.google.com/group/boofcv]] ||&lt;br /&gt;
{| width=&amp;quot;400pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Current Release: &amp;#039;&amp;#039;v1.1.4&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Date: &amp;#039;&amp;#039;May 14, 2024&amp;#039;&amp;#039; &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://github.com/lessthanoptimal/BoofCV/blob/v1.1.4/change.txt Change Log]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://youtu.be/BbTPQ9mIoQU Video Summary v0.38]&lt;br /&gt;
|}&lt;br /&gt;
| [[File:Boofcv_bug_propaganda_poster_small.jpg|125px|link=https://github.com/lessthanoptimal/BoofCV/issues]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| width=&amp;quot;600pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; |  [[File:Ninox360_icon_logo_moto.png|400px|link=https://www.ninox360.com]]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | A start up from the creators of BoofCV.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-help-icon.png|100px|link=[[Manual]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Manual]]&lt;br /&gt;
|-&lt;br /&gt;
| [[FAQ | FAQ]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.boofcv.org/javadoc/ JavaDoc]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCV/issues Report Bug]&lt;br /&gt;
|-&lt;br /&gt;
| [https://groups.google.com/group/boofcv Message Board]&lt;br /&gt;
|-&lt;br /&gt;
| [[Papers and Reports| Papers/Reports]]&lt;br /&gt;
|} &lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-binary-icon.png|100px|link=[https://github.com/lessthanoptimal/BoofCV Source Code]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Download|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.youtube.com/user/BoofCV/videos Videos]&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Bounties| Bounties ]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Contributing|Contribute]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCPP BoofCPP]&lt;br /&gt;
|} &lt;br /&gt;
| width&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-graph-icon.png|100px|link=[[Performance:BoofCV]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Performance:BoofCV|Performance]]&lt;br /&gt;
|-&lt;br /&gt;
| [[BoofCV Roadmap | Road Map]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Validation:Algorithms | Validation]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Projects_Using_BoofCV | Users ]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Acknowledgements|Acknowledgements]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;SPAN STYLE=&amp;quot;font-size: 14pt;text-align:center&amp;quot;&amp;gt;Prebuild Stand Alone Applications&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Examples_and_Demonstrations|Examples / Demonstrations]] || Example and demonstration applications&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create QR Code|QR Code Generator]] || Create and print QR Codes&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Square_Binary|Square Fiducials]] || Binary/Image Square Fiducial Generator &lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Calibration_Fiducials|Calibration Targets]] || Calibration Target Generator&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Camera_Calibration|Calibration]] || Camera Calibration Application&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Undistort|Lens Undistortion]] ||  Batch Removal of Lens Distortion&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Downsize|Image Downsize]] ||  Batch Image Down Sampling with minimal aliasing&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
| colspan=5 style=&amp;quot;background-color:#ffffdd;&amp;quot; align=&amp;quot;center&amp;quot; |&lt;br /&gt;
== Capability Summary ==&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Image Processing &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Feature &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Recognition&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Geometric &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Integration&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Image Convolution || [[Example_Convolution|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Image Derivatives || [[Example_Image_Derivative|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Thresholding || [[Example_Thresholding|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Ops || [[Example_Binary_Image|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Space || [[Example_Color_Space|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interpolation || [[Example_Interpolation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Deformation || [[Example_Key_Point_Based_Deformation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Blur || [[Example_Image_Blur|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Enhancement || [[Example_Image_Enhancement|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Noise Removal || [[Example_Wavelet_Noise_Removal|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fourier Transform || [[Example_Discrete_Fourier_Transform|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Wavelet Decomposition || &lt;br /&gt;
|- &lt;br /&gt;
| Discrete Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Float Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Scale Space Image || &lt;br /&gt;
|-&lt;br /&gt;
| Equirectangular || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye Cameras || [[Example_Fisheye_To_Pinhole|Example]]&lt;br /&gt;
|&lt;br /&gt;
|} &lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Black Polygons || [[Example_Detect_Black_Polygons|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Black Ellipses || [[Example_Detect_Black_Ellipses|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interest Points || [[Example_Detect_Interest_Points|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Line Detection || [[Example_Detect_Lines|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Motion Detection || [[Example_Background_Moving_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Contours || [[Example_Binary_Image|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Polygon Fitting || [[Example_Fit_Polygon|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Ellipse Fitting || [[Example_Fit_Ellipse|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Template Matching || [[Example_Template_Matching|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Interest Points || [[Example_Detect_Describe_Interface|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Dense Features || [[Example_Dense_Image_Features|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Point Tracking || [[Example_Track_Point_Features|Example]]&lt;br /&gt;
|-  &lt;br /&gt;
| Non-max Suppression || [[Example_Non_Maximum_Suppression|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Dense Optical Flow || [[Example_Dense_Optical_Flow|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Superpixels || [[Example_Superpixels|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Color Segmentation || [[Example_Color_Segmentation|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Scene Recognition || [[Example_Scene_Recognition|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Image Lookup || [[Example_Color_Histogram_Lookup|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| KNN Classifier || [[Example_Scene_Classification|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| CNN Classifiers || [[Example_Image_Classification|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Object Tracking || [[Example_Tracker_Object|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fiducials || [[Tutorial_Fiducials|Tutorial]]&lt;br /&gt;
|-&lt;br /&gt;
| QR Codes || [[Tutorial_QRCodes|Tutorial]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| SFM || [[Tutorial_Geometric_Vision|Tutorial]] &lt;br /&gt;
|- &lt;br /&gt;
| Camera Calibration || [[Tutorial_Camera_Calibration|Tutorial]]&lt;br /&gt;
|- &lt;br /&gt;
| Mono Calibration || [[Example_Calibrate_Planar_Mono|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Fisheye Calibration || [[Example_Calibrate_Planar_Fisheye|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Stereo Calibration || [[Example_Calibrate_Planar_Stereo|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Remove Distortion || [[Example_Remove_Lens_Distortion|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Equi to Pinhole || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye to Equi|| [[Example_Fisheye_To_Equirectangular|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Bundle Adjustment || [[Example Sparse Bundle Adjustment|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| 3D Stereo Cloud || [[Example_Stereo_Disparity_3D|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Monocular Stereo || [[Example_Stereo_Single_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Uncalibrated Stereo || [[Example_Three_View_Stereo_Uncalibrated|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Multi Baseline Stereo || [[Example_Multi_Baseline_Stereo|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Scene Reconstruction || [[Example_Multiview_Reconstruction_Dense|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Video Stabilization || [[Example_Video_Stabilization|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Video Mosaic || [[Example_Video_Mosaic|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Stereo || [[Example_Stereo_Visual_Odometry|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Mono Plane || [[Example_Visual_Odometry_Monocular_Plane|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: RGB-D || [[Example_Visual_Odometry_Depth|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
| Visualization&lt;br /&gt;
|-&lt;br /&gt;
| [[Android_support|Android]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Videos and Webcams|Video]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Kinect|Kinect]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Processing|Processing]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/PyBoof Python]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Main_Page&amp;diff=3279</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Main_Page&amp;diff=3279"/>
		<updated>2024-02-24T21:13:46Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&lt;br /&gt;
[[File:Boofcv_logo_circles_frontpage.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
BoofCV is an open source library written from scratch for real-time computer vision. Its functionality covers a range of subjects, low-level image processing, camera calibration, feature detection/tracking, structure-from-motion, fiducial detection, and recognition. BoofCV has been released under an Apache  2.0 license for both academic and commercial use.&lt;br /&gt;
&lt;br /&gt;
BoofCV is organized into several packages: &amp;#039;&amp;#039;image processing&amp;#039;&amp;#039;, &amp;#039;&amp;#039;features&amp;#039;&amp;#039;, &amp;#039;&amp;#039;geometric vision&amp;#039;&amp;#039;, &amp;#039;&amp;#039;calibration&amp;#039;&amp;#039;, &amp;#039;&amp;#039;recognition&amp;#039;&amp;#039;,&amp;#039;&amp;#039;visualize&amp;#039;&amp;#039;, and &amp;#039;&amp;#039;IO&amp;#039;&amp;#039;.  &amp;#039;&amp;#039;Image processing&amp;#039;&amp;#039; contains commonly used image processing functions which operate directly on pixels.  &amp;#039;&amp;#039;Features&amp;#039;&amp;#039; contains feature extraction algorithms for use in higher level operations.  &amp;#039;&amp;#039;Calibration&amp;#039;&amp;#039; has routines for determining the camera&amp;#039;s intrinsic and extrinsic parameters.  &amp;#039;&amp;#039;Recognition&amp;#039;&amp;#039; is for recognition and tracking complex visual objects.  &amp;#039;&amp;#039;Geometric vision&amp;#039;&amp;#039; is composed of routines for processing extracted image features using 2D and 3D geometry. &amp;#039;&amp;#039;Visualize&amp;#039;&amp;#039; has routines for rendering and displaying extracted features.  &amp;#039;&amp;#039;IO&amp;#039;&amp;#039; has input and output routines for different data structures.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| &lt;br /&gt;
|-&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/wgPzlokxbXw|300|center}}&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/O_yAdsT8d84|300|center}}&lt;br /&gt;
|-&lt;br /&gt;
! New calibration tools in v0.39&lt;br /&gt;
! Three View Self Calibration&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://www.ninox360.com/calibration-targets 2022-Nov: Create calibration targets in your browser]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://www.ninox360.com/barcode-scanner 2022-Nov: Barcode scanner webapp]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://medium.com/p/35b431fcccf1 2022-Jan: Article on scanning Micro QR Codes]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[[Tutorial_Camera_Calibration|2021-Oct: Camera Calibration Tutorial has been re-written.]]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://youtu.be/RCL5tSt189M 2021-Mar: Stereo Cloud from Mars Perseverance Rover]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:Loose-lips.jpg|125px|link=https://groups.google.com/group/boofcv]] ||&lt;br /&gt;
{| width=&amp;quot;400pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Current Release: &amp;#039;&amp;#039;v1.1.3&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Date: &amp;#039;&amp;#039;February 24, 2024&amp;#039;&amp;#039; &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://github.com/lessthanoptimal/BoofCV/blob/v1.1.3/change.txt Change Log]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://youtu.be/BbTPQ9mIoQU Video Summary v0.38]&lt;br /&gt;
|}&lt;br /&gt;
| [[File:Boofcv_bug_propaganda_poster_small.jpg|125px|link=https://github.com/lessthanoptimal/BoofCV/issues]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| width=&amp;quot;600pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; |  [[File:Ninox360_icon_logo_moto.png|400px|link=https://www.ninox360.com]]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | A start up from the creators of BoofCV.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-help-icon.png|100px|link=[[Manual]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Manual]]&lt;br /&gt;
|-&lt;br /&gt;
| [[FAQ | FAQ]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.boofcv.org/javadoc/ JavaDoc]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCV/issues Report Bug]&lt;br /&gt;
|-&lt;br /&gt;
| [https://groups.google.com/group/boofcv Message Board]&lt;br /&gt;
|-&lt;br /&gt;
| [[Papers and Reports| Papers/Reports]]&lt;br /&gt;
|} &lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-binary-icon.png|100px|link=[https://github.com/lessthanoptimal/BoofCV Source Code]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Download|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.youtube.com/user/BoofCV/videos Videos]&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Bounties| Bounties ]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Contributing|Contribute]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCPP BoofCPP]&lt;br /&gt;
|} &lt;br /&gt;
| width&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-graph-icon.png|100px|link=[[Performance:BoofCV]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Performance:BoofCV|Performance]]&lt;br /&gt;
|-&lt;br /&gt;
| [[BoofCV Roadmap | Road Map]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Validation:Algorithms | Validation]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Projects_Using_BoofCV | Users ]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Acknowledgements|Acknowledgements]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;SPAN STYLE=&amp;quot;font-size: 14pt;text-align:center&amp;quot;&amp;gt;Prebuild Stand Alone Applications&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Examples_and_Demonstrations|Examples / Demonstrations]] || Example and demonstration applications&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create QR Code|QR Code Generator]] || Create and print QR Codes&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Square_Binary|Square Fiducials]] || Binary/Image Square Fiducial Generator &lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Calibration_Fiducials|Calibration Targets]] || Calibration Target Generator&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Camera_Calibration|Calibration]] || Camera Calibration Application&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Undistort|Lens Undistortion]] ||  Batch Removal of Lens Distortion&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Downsize|Image Downsize]] ||  Batch Image Down Sampling with minimal aliasing&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
| colspan=5 style=&amp;quot;background-color:#ffffdd;&amp;quot; align=&amp;quot;center&amp;quot; |&lt;br /&gt;
== Capability Summary ==&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Image Processing &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Feature &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Recognition&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Geometric &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Integration&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Image Convolution || [[Example_Convolution|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Image Derivatives || [[Example_Image_Derivative|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Thresholding || [[Example_Thresholding|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Ops || [[Example_Binary_Image|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Space || [[Example_Color_Space|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interpolation || [[Example_Interpolation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Deformation || [[Example_Key_Point_Based_Deformation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Blur || [[Example_Image_Blur|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Enhancement || [[Example_Image_Enhancement|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Noise Removal || [[Example_Wavelet_Noise_Removal|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fourier Transform || [[Example_Discrete_Fourier_Transform|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Wavelet Decomposition || &lt;br /&gt;
|- &lt;br /&gt;
| Discrete Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Float Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Scale Space Image || &lt;br /&gt;
|-&lt;br /&gt;
| Equirectangular || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye Cameras || [[Example_Fisheye_To_Pinhole|Example]]&lt;br /&gt;
|&lt;br /&gt;
|} &lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Black Polygons || [[Example_Detect_Black_Polygons|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Black Ellipses || [[Example_Detect_Black_Ellipses|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interest Points || [[Example_Detect_Interest_Points|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Line Detection || [[Example_Detect_Lines|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Motion Detection || [[Example_Background_Moving_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Contours || [[Example_Binary_Image|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Polygon Fitting || [[Example_Fit_Polygon|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Ellipse Fitting || [[Example_Fit_Ellipse|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Template Matching || [[Example_Template_Matching|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Interest Points || [[Example_Detect_Describe_Interface|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Dense Features || [[Example_Dense_Image_Features|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Point Tracking || [[Example_Track_Point_Features|Example]]&lt;br /&gt;
|-  &lt;br /&gt;
| Non-max Suppression || [[Example_Non_Maximum_Suppression|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Dense Optical Flow || [[Example_Dense_Optical_Flow|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Superpixels || [[Example_Superpixels|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Color Segmentation || [[Example_Color_Segmentation|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Scene Recognition || [[Example_Scene_Recognition|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Image Lookup || [[Example_Color_Histogram_Lookup|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| KNN Classifier || [[Example_Scene_Classification|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| CNN Classifiers || [[Example_Image_Classification|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Object Tracking || [[Example_Tracker_Object|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fiducials || [[Tutorial_Fiducials|Tutorial]]&lt;br /&gt;
|-&lt;br /&gt;
| QR Codes || [[Tutorial_QRCodes|Tutorial]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| SFM || [[Tutorial_Geometric_Vision|Tutorial]] &lt;br /&gt;
|- &lt;br /&gt;
| Camera Calibration || [[Tutorial_Camera_Calibration|Tutorial]]&lt;br /&gt;
|- &lt;br /&gt;
| Mono Calibration || [[Example_Calibrate_Planar_Mono|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Fisheye Calibration || [[Example_Calibrate_Planar_Fisheye|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Stereo Calibration || [[Example_Calibrate_Planar_Stereo|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Remove Distortion || [[Example_Remove_Lens_Distortion|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Equi to Pinhole || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye to Equi|| [[Example_Fisheye_To_Equirectangular|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Bundle Adjustment || [[Example Sparse Bundle Adjustment|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| 3D Stereo Cloud || [[Example_Stereo_Disparity_3D|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Monocular Stereo || [[Example_Stereo_Single_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Uncalibrated Stereo || [[Example_Three_View_Stereo_Uncalibrated|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Multi Baseline Stereo || [[Example_Multi_Baseline_Stereo|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Scene Reconstruction || [[Example_Multiview_Reconstruction_Dense|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Video Stabilization || [[Example_Video_Stabilization|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Video Mosaic || [[Example_Video_Mosaic|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Stereo || [[Example_Stereo_Visual_Odometry|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Mono Plane || [[Example_Visual_Odometry_Monocular_Plane|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: RGB-D || [[Example_Visual_Odometry_Depth|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
| Visualization&lt;br /&gt;
|-&lt;br /&gt;
| [[Android_support|Android]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Videos and Webcams|Video]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Kinect|Kinect]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Processing|Processing]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/PyBoof Python]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Main_Page&amp;diff=3278</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Main_Page&amp;diff=3278"/>
		<updated>2023-11-05T16:34:35Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&lt;br /&gt;
[[File:Boofcv_logo_circles_frontpage.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
BoofCV is an open source library written from scratch for real-time computer vision. Its functionality covers a range of subjects, low-level image processing, camera calibration, feature detection/tracking, structure-from-motion, fiducial detection, and recognition. BoofCV has been released under an Apache  2.0 license for both academic and commercial use.&lt;br /&gt;
&lt;br /&gt;
BoofCV is organized into several packages: &amp;#039;&amp;#039;image processing&amp;#039;&amp;#039;, &amp;#039;&amp;#039;features&amp;#039;&amp;#039;, &amp;#039;&amp;#039;geometric vision&amp;#039;&amp;#039;, &amp;#039;&amp;#039;calibration&amp;#039;&amp;#039;, &amp;#039;&amp;#039;recognition&amp;#039;&amp;#039;,&amp;#039;&amp;#039;visualize&amp;#039;&amp;#039;, and &amp;#039;&amp;#039;IO&amp;#039;&amp;#039;.  &amp;#039;&amp;#039;Image processing&amp;#039;&amp;#039; contains commonly used image processing functions which operate directly on pixels.  &amp;#039;&amp;#039;Features&amp;#039;&amp;#039; contains feature extraction algorithms for use in higher level operations.  &amp;#039;&amp;#039;Calibration&amp;#039;&amp;#039; has routines for determining the camera&amp;#039;s intrinsic and extrinsic parameters.  &amp;#039;&amp;#039;Recognition&amp;#039;&amp;#039; is for recognition and tracking complex visual objects.  &amp;#039;&amp;#039;Geometric vision&amp;#039;&amp;#039; is composed of routines for processing extracted image features using 2D and 3D geometry. &amp;#039;&amp;#039;Visualize&amp;#039;&amp;#039; has routines for rendering and displaying extracted features.  &amp;#039;&amp;#039;IO&amp;#039;&amp;#039; has input and output routines for different data structures.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| &lt;br /&gt;
|-&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/wgPzlokxbXw|300|center}}&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/O_yAdsT8d84|300|center}}&lt;br /&gt;
|-&lt;br /&gt;
! New calibration tools in v0.39&lt;br /&gt;
! Three View Self Calibration&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://www.ninox360.com/calibration-targets 2022-Nov: Create calibration targets in your browser]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://www.ninox360.com/barcode-scanner 2022-Nov: Barcode scanner webapp]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://medium.com/p/35b431fcccf1 2022-Jan: Article on scanning Micro QR Codes]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[[Tutorial_Camera_Calibration|2021-Oct: Camera Calibration Tutorial has been re-written.]]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://youtu.be/RCL5tSt189M 2021-Mar: Stereo Cloud from Mars Perseverance Rover]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:Loose-lips.jpg|125px|link=https://groups.google.com/group/boofcv]] ||&lt;br /&gt;
{| width=&amp;quot;400pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Current Release: &amp;#039;&amp;#039;v1.1.2&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Date: &amp;#039;&amp;#039;November 5, 2023&amp;#039;&amp;#039; &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://github.com/lessthanoptimal/BoofCV/blob/v1.1.2/change.txt Change Log]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://youtu.be/BbTPQ9mIoQU Video Summary v0.38]&lt;br /&gt;
|}&lt;br /&gt;
| [[File:Boofcv_bug_propaganda_poster_small.jpg|125px|link=https://github.com/lessthanoptimal/BoofCV/issues]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| width=&amp;quot;600pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; |  [[File:Ninox360_icon_logo_moto.png|400px|link=https://www.ninox360.com]]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | A start up from the creators of BoofCV.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-help-icon.png|100px|link=[[Manual]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Manual]]&lt;br /&gt;
|-&lt;br /&gt;
| [[FAQ | FAQ]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.boofcv.org/javadoc/ JavaDoc]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCV/issues Report Bug]&lt;br /&gt;
|-&lt;br /&gt;
| [https://groups.google.com/group/boofcv Message Board]&lt;br /&gt;
|-&lt;br /&gt;
| [[Papers and Reports| Papers/Reports]]&lt;br /&gt;
|} &lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-binary-icon.png|100px|link=[https://github.com/lessthanoptimal/BoofCV Source Code]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Download|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.youtube.com/user/BoofCV/videos Videos]&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Bounties| Bounties ]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Contributing|Contribute]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCPP BoofCPP]&lt;br /&gt;
|} &lt;br /&gt;
| width&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-graph-icon.png|100px|link=[[Performance:BoofCV]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Performance:BoofCV|Performance]]&lt;br /&gt;
|-&lt;br /&gt;
| [[BoofCV Roadmap | Road Map]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Validation:Algorithms | Validation]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Projects_Using_BoofCV | Users ]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Acknowledgements|Acknowledgements]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;SPAN STYLE=&amp;quot;font-size: 14pt;text-align:center&amp;quot;&amp;gt;Prebuild Stand Alone Applications&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Examples_and_Demonstrations|Examples / Demonstrations]] || Example and demonstration applications&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create QR Code|QR Code Generator]] || Create and print QR Codes&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Square_Binary|Square Fiducials]] || Binary/Image Square Fiducial Generator &lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Calibration_Fiducials|Calibration Targets]] || Calibration Target Generator&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Camera_Calibration|Calibration]] || Camera Calibration Application&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Undistort|Lens Undistortion]] ||  Batch Removal of Lens Distortion&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Downsize|Image Downsize]] ||  Batch Image Down Sampling with minimal aliasing&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
| colspan=5 style=&amp;quot;background-color:#ffffdd;&amp;quot; align=&amp;quot;center&amp;quot; |&lt;br /&gt;
== Capability Summary ==&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Image Processing &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Feature &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Recognition&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Geometric &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Integration&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Image Convolution || [[Example_Convolution|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Image Derivatives || [[Example_Image_Derivative|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Thresholding || [[Example_Thresholding|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Ops || [[Example_Binary_Image|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Space || [[Example_Color_Space|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interpolation || [[Example_Interpolation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Deformation || [[Example_Key_Point_Based_Deformation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Blur || [[Example_Image_Blur|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Enhancement || [[Example_Image_Enhancement|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Noise Removal || [[Example_Wavelet_Noise_Removal|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fourier Transform || [[Example_Discrete_Fourier_Transform|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Wavelet Decomposition || &lt;br /&gt;
|- &lt;br /&gt;
| Discrete Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Float Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Scale Space Image || &lt;br /&gt;
|-&lt;br /&gt;
| Equirectangular || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye Cameras || [[Example_Fisheye_To_Pinhole|Example]]&lt;br /&gt;
|&lt;br /&gt;
|} &lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Black Polygons || [[Example_Detect_Black_Polygons|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Black Ellipses || [[Example_Detect_Black_Ellipses|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interest Points || [[Example_Detect_Interest_Points|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Line Detection || [[Example_Detect_Lines|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Motion Detection || [[Example_Background_Moving_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Contours || [[Example_Binary_Image|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Polygon Fitting || [[Example_Fit_Polygon|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Ellipse Fitting || [[Example_Fit_Ellipse|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Template Matching || [[Example_Template_Matching|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Interest Points || [[Example_Detect_Describe_Interface|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Dense Features || [[Example_Dense_Image_Features|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Point Tracking || [[Example_Track_Point_Features|Example]]&lt;br /&gt;
|-  &lt;br /&gt;
| Non-max Suppression || [[Example_Non_Maximum_Suppression|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Dense Optical Flow || [[Example_Dense_Optical_Flow|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Superpixels || [[Example_Superpixels|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Color Segmentation || [[Example_Color_Segmentation|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Scene Recognition || [[Example_Scene_Recognition|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Image Lookup || [[Example_Color_Histogram_Lookup|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| KNN Classifier || [[Example_Scene_Classification|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| CNN Classifiers || [[Example_Image_Classification|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Object Tracking || [[Example_Tracker_Object|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fiducials || [[Tutorial_Fiducials|Tutorial]]&lt;br /&gt;
|-&lt;br /&gt;
| QR Codes || [[Tutorial_QRCodes|Tutorial]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| SFM || [[Tutorial_Geometric_Vision|Tutorial]] &lt;br /&gt;
|- &lt;br /&gt;
| Camera Calibration || [[Tutorial_Camera_Calibration|Tutorial]]&lt;br /&gt;
|- &lt;br /&gt;
| Mono Calibration || [[Example_Calibrate_Planar_Mono|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Fisheye Calibration || [[Example_Calibrate_Planar_Fisheye|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Stereo Calibration || [[Example_Calibrate_Planar_Stereo|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Remove Distortion || [[Example_Remove_Lens_Distortion|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Equi to Pinhole || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye to Equi|| [[Example_Fisheye_To_Equirectangular|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Bundle Adjustment || [[Example Sparse Bundle Adjustment|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| 3D Stereo Cloud || [[Example_Stereo_Disparity_3D|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Monocular Stereo || [[Example_Stereo_Single_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Uncalibrated Stereo || [[Example_Three_View_Stereo_Uncalibrated|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Multi Baseline Stereo || [[Example_Multi_Baseline_Stereo|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Scene Reconstruction || [[Example_Multiview_Reconstruction_Dense|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Video Stabilization || [[Example_Video_Stabilization|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Video Mosaic || [[Example_Video_Mosaic|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Stereo || [[Example_Stereo_Visual_Odometry|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Mono Plane || [[Example_Visual_Odometry_Monocular_Plane|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: RGB-D || [[Example_Visual_Odometry_Depth|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
| Visualization&lt;br /&gt;
|-&lt;br /&gt;
| [[Android_support|Android]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Videos and Webcams|Video]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Kinect|Kinect]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Processing|Processing]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/PyBoof Python]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Main_Page&amp;diff=3277</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Main_Page&amp;diff=3277"/>
		<updated>2023-09-24T19:53:08Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&lt;br /&gt;
[[File:Boofcv_logo_circles_frontpage.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
BoofCV is an open source library written from scratch for real-time computer vision. Its functionality covers a range of subjects, low-level image processing, camera calibration, feature detection/tracking, structure-from-motion, fiducial detection, and recognition. BoofCV has been released under an Apache  2.0 license for both academic and commercial use.&lt;br /&gt;
&lt;br /&gt;
BoofCV is organized into several packages: &amp;#039;&amp;#039;image processing&amp;#039;&amp;#039;, &amp;#039;&amp;#039;features&amp;#039;&amp;#039;, &amp;#039;&amp;#039;geometric vision&amp;#039;&amp;#039;, &amp;#039;&amp;#039;calibration&amp;#039;&amp;#039;, &amp;#039;&amp;#039;recognition&amp;#039;&amp;#039;,&amp;#039;&amp;#039;visualize&amp;#039;&amp;#039;, and &amp;#039;&amp;#039;IO&amp;#039;&amp;#039;.  &amp;#039;&amp;#039;Image processing&amp;#039;&amp;#039; contains commonly used image processing functions which operate directly on pixels.  &amp;#039;&amp;#039;Features&amp;#039;&amp;#039; contains feature extraction algorithms for use in higher level operations.  &amp;#039;&amp;#039;Calibration&amp;#039;&amp;#039; has routines for determining the camera&amp;#039;s intrinsic and extrinsic parameters.  &amp;#039;&amp;#039;Recognition&amp;#039;&amp;#039; is for recognition and tracking complex visual objects.  &amp;#039;&amp;#039;Geometric vision&amp;#039;&amp;#039; is composed of routines for processing extracted image features using 2D and 3D geometry. &amp;#039;&amp;#039;Visualize&amp;#039;&amp;#039; has routines for rendering and displaying extracted features.  &amp;#039;&amp;#039;IO&amp;#039;&amp;#039; has input and output routines for different data structures.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| &lt;br /&gt;
|-&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/wgPzlokxbXw|300|center}}&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/O_yAdsT8d84|300|center}}&lt;br /&gt;
|-&lt;br /&gt;
! New calibration tools in v0.39&lt;br /&gt;
! Three View Self Calibration&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://www.ninox360.com/calibration-targets 2022-Nov: Create calibration targets in your browser]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://www.ninox360.com/barcode-scanner 2022-Nov: Barcode scanner webapp]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://medium.com/p/35b431fcccf1 2022-Jan: Article on scanning Micro QR Codes]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[[Tutorial_Camera_Calibration|2021-Oct: Camera Calibration Tutorial has been re-written.]]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://youtu.be/RCL5tSt189M 2021-Mar: Stereo Cloud from Mars Perseverance Rover]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:Loose-lips.jpg|125px|link=https://groups.google.com/group/boofcv]] ||&lt;br /&gt;
{| width=&amp;quot;400pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Current Release: &amp;#039;&amp;#039;v1.1.1&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Date: &amp;#039;&amp;#039;September 24, 2023&amp;#039;&amp;#039; &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://github.com/lessthanoptimal/BoofCV/blob/v1.1.1/change.txt Change Log]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://youtu.be/BbTPQ9mIoQU Video Summary v0.38]&lt;br /&gt;
|}&lt;br /&gt;
| [[File:Boofcv_bug_propaganda_poster_small.jpg|125px|link=https://github.com/lessthanoptimal/BoofCV/issues]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| width=&amp;quot;600pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; |  [[File:Ninox360_icon_logo_moto.png|400px|link=https://www.ninox360.com]]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | A start up from the creators of BoofCV.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-help-icon.png|100px|link=[[Manual]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Manual]]&lt;br /&gt;
|-&lt;br /&gt;
| [[FAQ | FAQ]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.boofcv.org/javadoc/ JavaDoc]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCV/issues Report Bug]&lt;br /&gt;
|-&lt;br /&gt;
| [https://groups.google.com/group/boofcv Message Board]&lt;br /&gt;
|-&lt;br /&gt;
| [[Papers and Reports| Papers/Reports]]&lt;br /&gt;
|} &lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-binary-icon.png|100px|link=[https://github.com/lessthanoptimal/BoofCV Source Code]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Download|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.youtube.com/user/BoofCV/videos Videos]&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Bounties| Bounties ]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Contributing|Contribute]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCPP BoofCPP]&lt;br /&gt;
|} &lt;br /&gt;
| width&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-graph-icon.png|100px|link=[[Performance:BoofCV]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Performance:BoofCV|Performance]]&lt;br /&gt;
|-&lt;br /&gt;
| [[BoofCV Roadmap | Road Map]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Validation:Algorithms | Validation]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Projects_Using_BoofCV | Users ]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Acknowledgements|Acknowledgements]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;SPAN STYLE=&amp;quot;font-size: 14pt;text-align:center&amp;quot;&amp;gt;Prebuild Stand Alone Applications&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Examples_and_Demonstrations|Examples / Demonstrations]] || Example and demonstration applications&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create QR Code|QR Code Generator]] || Create and print QR Codes&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Square_Binary|Square Fiducials]] || Binary/Image Square Fiducial Generator &lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Calibration_Fiducials|Calibration Targets]] || Calibration Target Generator&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Camera_Calibration|Calibration]] || Camera Calibration Application&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Undistort|Lens Undistortion]] ||  Batch Removal of Lens Distortion&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Downsize|Image Downsize]] ||  Batch Image Down Sampling with minimal aliasing&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
| colspan=5 style=&amp;quot;background-color:#ffffdd;&amp;quot; align=&amp;quot;center&amp;quot; |&lt;br /&gt;
== Capability Summary ==&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Image Processing &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Feature &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Recognition&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Geometric &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Integration&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Image Convolution || [[Example_Convolution|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Image Derivatives || [[Example_Image_Derivative|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Thresholding || [[Example_Thresholding|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Ops || [[Example_Binary_Image|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Space || [[Example_Color_Space|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interpolation || [[Example_Interpolation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Deformation || [[Example_Key_Point_Based_Deformation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Blur || [[Example_Image_Blur|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Enhancement || [[Example_Image_Enhancement|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Noise Removal || [[Example_Wavelet_Noise_Removal|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fourier Transform || [[Example_Discrete_Fourier_Transform|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Wavelet Decomposition || &lt;br /&gt;
|- &lt;br /&gt;
| Discrete Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Float Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Scale Space Image || &lt;br /&gt;
|-&lt;br /&gt;
| Equirectangular || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye Cameras || [[Example_Fisheye_To_Pinhole|Example]]&lt;br /&gt;
|&lt;br /&gt;
|} &lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Black Polygons || [[Example_Detect_Black_Polygons|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Black Ellipses || [[Example_Detect_Black_Ellipses|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interest Points || [[Example_Detect_Interest_Points|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Line Detection || [[Example_Detect_Lines|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Motion Detection || [[Example_Background_Moving_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Contours || [[Example_Binary_Image|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Polygon Fitting || [[Example_Fit_Polygon|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Ellipse Fitting || [[Example_Fit_Ellipse|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Template Matching || [[Example_Template_Matching|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Interest Points || [[Example_Detect_Describe_Interface|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Dense Features || [[Example_Dense_Image_Features|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Point Tracking || [[Example_Track_Point_Features|Example]]&lt;br /&gt;
|-  &lt;br /&gt;
| Non-max Suppression || [[Example_Non_Maximum_Suppression|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Dense Optical Flow || [[Example_Dense_Optical_Flow|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Superpixels || [[Example_Superpixels|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Color Segmentation || [[Example_Color_Segmentation|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Scene Recognition || [[Example_Scene_Recognition|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Image Lookup || [[Example_Color_Histogram_Lookup|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| KNN Classifier || [[Example_Scene_Classification|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| CNN Classifiers || [[Example_Image_Classification|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Object Tracking || [[Example_Tracker_Object|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fiducials || [[Tutorial_Fiducials|Tutorial]]&lt;br /&gt;
|-&lt;br /&gt;
| QR Codes || [[Tutorial_QRCodes|Tutorial]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| SFM || [[Tutorial_Geometric_Vision|Tutorial]] &lt;br /&gt;
|- &lt;br /&gt;
| Camera Calibration || [[Tutorial_Camera_Calibration|Tutorial]]&lt;br /&gt;
|- &lt;br /&gt;
| Mono Calibration || [[Example_Calibrate_Planar_Mono|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Fisheye Calibration || [[Example_Calibrate_Planar_Fisheye|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Stereo Calibration || [[Example_Calibrate_Planar_Stereo|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Remove Distortion || [[Example_Remove_Lens_Distortion|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Equi to Pinhole || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye to Equi|| [[Example_Fisheye_To_Equirectangular|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Bundle Adjustment || [[Example Sparse Bundle Adjustment|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| 3D Stereo Cloud || [[Example_Stereo_Disparity_3D|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Monocular Stereo || [[Example_Stereo_Single_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Uncalibrated Stereo || [[Example_Three_View_Stereo_Uncalibrated|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Multi Baseline Stereo || [[Example_Multi_Baseline_Stereo|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Scene Reconstruction || [[Example_Multiview_Reconstruction_Dense|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Video Stabilization || [[Example_Video_Stabilization|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Video Mosaic || [[Example_Video_Mosaic|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Stereo || [[Example_Stereo_Visual_Odometry|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Mono Plane || [[Example_Visual_Odometry_Monocular_Plane|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: RGB-D || [[Example_Visual_Odometry_Depth|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
| Visualization&lt;br /&gt;
|-&lt;br /&gt;
| [[Android_support|Android]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Videos and Webcams|Video]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Kinect|Kinect]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Processing|Processing]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/PyBoof Python]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Main_Page&amp;diff=3276</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Main_Page&amp;diff=3276"/>
		<updated>2023-09-10T02:11:15Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&lt;br /&gt;
[[File:Boofcv_logo_circles_frontpage.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
BoofCV is an open source library written from scratch for real-time computer vision. Its functionality covers a range of subjects, low-level image processing, camera calibration, feature detection/tracking, structure-from-motion, fiducial detection, and recognition. BoofCV has been released under an Apache  2.0 license for both academic and commercial use.&lt;br /&gt;
&lt;br /&gt;
BoofCV is organized into several packages: &amp;#039;&amp;#039;image processing&amp;#039;&amp;#039;, &amp;#039;&amp;#039;features&amp;#039;&amp;#039;, &amp;#039;&amp;#039;geometric vision&amp;#039;&amp;#039;, &amp;#039;&amp;#039;calibration&amp;#039;&amp;#039;, &amp;#039;&amp;#039;recognition&amp;#039;&amp;#039;,&amp;#039;&amp;#039;visualize&amp;#039;&amp;#039;, and &amp;#039;&amp;#039;IO&amp;#039;&amp;#039;.  &amp;#039;&amp;#039;Image processing&amp;#039;&amp;#039; contains commonly used image processing functions which operate directly on pixels.  &amp;#039;&amp;#039;Features&amp;#039;&amp;#039; contains feature extraction algorithms for use in higher level operations.  &amp;#039;&amp;#039;Calibration&amp;#039;&amp;#039; has routines for determining the camera&amp;#039;s intrinsic and extrinsic parameters.  &amp;#039;&amp;#039;Recognition&amp;#039;&amp;#039; is for recognition and tracking complex visual objects.  &amp;#039;&amp;#039;Geometric vision&amp;#039;&amp;#039; is composed of routines for processing extracted image features using 2D and 3D geometry. &amp;#039;&amp;#039;Visualize&amp;#039;&amp;#039; has routines for rendering and displaying extracted features.  &amp;#039;&amp;#039;IO&amp;#039;&amp;#039; has input and output routines for different data structures.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| &lt;br /&gt;
|-&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/wgPzlokxbXw|300|center}}&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/O_yAdsT8d84|300|center}}&lt;br /&gt;
|-&lt;br /&gt;
! New calibration tools in v0.39&lt;br /&gt;
! Three View Self Calibration&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://www.ninox360.com/calibration-targets 2022-Nov: Create calibration targets in your browser]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://www.ninox360.com/barcode-scanner 2022-Nov: Barcode scanner webapp]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://medium.com/p/35b431fcccf1 2022-Jan: Article on scanning Micro QR Codes]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[[Tutorial_Camera_Calibration|2021-Oct: Camera Calibration Tutorial has been re-written.]]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://youtu.be/RCL5tSt189M 2021-Mar: Stereo Cloud from Mars Perseverance Rover]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:Loose-lips.jpg|125px|link=https://groups.google.com/group/boofcv]] ||&lt;br /&gt;
{| width=&amp;quot;400pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Current Release: &amp;#039;&amp;#039;v1.1.0&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Date: &amp;#039;&amp;#039;September 9, 2023&amp;#039;&amp;#039; &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://github.com/lessthanoptimal/BoofCV/blob/v1.1.0/change.txt Change Log]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://youtu.be/BbTPQ9mIoQU Video Summary v0.38]&lt;br /&gt;
|}&lt;br /&gt;
| [[File:Boofcv_bug_propaganda_poster_small.jpg|125px|link=https://github.com/lessthanoptimal/BoofCV/issues]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| width=&amp;quot;600pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; |  [[File:Ninox360_icon_logo_moto.png|400px|link=https://www.ninox360.com]]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | A start up from the creators of BoofCV.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-help-icon.png|100px|link=[[Manual]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Manual]]&lt;br /&gt;
|-&lt;br /&gt;
| [[FAQ | FAQ]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.boofcv.org/javadoc/ JavaDoc]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCV/issues Report Bug]&lt;br /&gt;
|-&lt;br /&gt;
| [https://groups.google.com/group/boofcv Message Board]&lt;br /&gt;
|-&lt;br /&gt;
| [[Papers and Reports| Papers/Reports]]&lt;br /&gt;
|} &lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-binary-icon.png|100px|link=[https://github.com/lessthanoptimal/BoofCV Source Code]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Download|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.youtube.com/user/BoofCV/videos Videos]&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Bounties| Bounties ]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Contributing|Contribute]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCPP BoofCPP]&lt;br /&gt;
|} &lt;br /&gt;
| width&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-graph-icon.png|100px|link=[[Performance:BoofCV]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Performance:BoofCV|Performance]]&lt;br /&gt;
|-&lt;br /&gt;
| [[BoofCV Roadmap | Road Map]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Validation:Algorithms | Validation]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Projects_Using_BoofCV | Users ]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Acknowledgements|Acknowledgements]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;SPAN STYLE=&amp;quot;font-size: 14pt;text-align:center&amp;quot;&amp;gt;Prebuild Stand Alone Applications&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Examples_and_Demonstrations|Examples / Demonstrations]] || Example and demonstration applications&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create QR Code|QR Code Generator]] || Create and print QR Codes&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Square_Binary|Square Fiducials]] || Binary/Image Square Fiducial Generator &lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Calibration_Fiducials|Calibration Targets]] || Calibration Target Generator&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Camera_Calibration|Calibration]] || Camera Calibration Application&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Undistort|Lens Undistortion]] ||  Batch Removal of Lens Distortion&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Downsize|Image Downsize]] ||  Batch Image Down Sampling with minimal aliasing&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
| colspan=5 style=&amp;quot;background-color:#ffffdd;&amp;quot; align=&amp;quot;center&amp;quot; |&lt;br /&gt;
== Capability Summary ==&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Image Processing &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Feature &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Recognition&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Geometric &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Integration&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Image Convolution || [[Example_Convolution|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Image Derivatives || [[Example_Image_Derivative|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Thresholding || [[Example_Thresholding|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Ops || [[Example_Binary_Image|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Space || [[Example_Color_Space|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interpolation || [[Example_Interpolation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Deformation || [[Example_Key_Point_Based_Deformation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Blur || [[Example_Image_Blur|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Enhancement || [[Example_Image_Enhancement|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Noise Removal || [[Example_Wavelet_Noise_Removal|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fourier Transform || [[Example_Discrete_Fourier_Transform|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Wavelet Decomposition || &lt;br /&gt;
|- &lt;br /&gt;
| Discrete Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Float Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Scale Space Image || &lt;br /&gt;
|-&lt;br /&gt;
| Equirectangular || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye Cameras || [[Example_Fisheye_To_Pinhole|Example]]&lt;br /&gt;
|&lt;br /&gt;
|} &lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Black Polygons || [[Example_Detect_Black_Polygons|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Black Ellipses || [[Example_Detect_Black_Ellipses|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interest Points || [[Example_Detect_Interest_Points|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Line Detection || [[Example_Detect_Lines|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Motion Detection || [[Example_Background_Moving_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Contours || [[Example_Binary_Image|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Polygon Fitting || [[Example_Fit_Polygon|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Ellipse Fitting || [[Example_Fit_Ellipse|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Template Matching || [[Example_Template_Matching|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Interest Points || [[Example_Detect_Describe_Interface|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Dense Features || [[Example_Dense_Image_Features|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Point Tracking || [[Example_Track_Point_Features|Example]]&lt;br /&gt;
|-  &lt;br /&gt;
| Non-max Suppression || [[Example_Non_Maximum_Suppression|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Dense Optical Flow || [[Example_Dense_Optical_Flow|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Superpixels || [[Example_Superpixels|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Color Segmentation || [[Example_Color_Segmentation|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Scene Recognition || [[Example_Scene_Recognition|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Image Lookup || [[Example_Color_Histogram_Lookup|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| KNN Classifier || [[Example_Scene_Classification|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| CNN Classifiers || [[Example_Image_Classification|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Object Tracking || [[Example_Tracker_Object|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fiducials || [[Tutorial_Fiducials|Tutorial]]&lt;br /&gt;
|-&lt;br /&gt;
| QR Codes || [[Tutorial_QRCodes|Tutorial]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| SFM || [[Tutorial_Geometric_Vision|Tutorial]] &lt;br /&gt;
|- &lt;br /&gt;
| Camera Calibration || [[Tutorial_Camera_Calibration|Tutorial]]&lt;br /&gt;
|- &lt;br /&gt;
| Mono Calibration || [[Example_Calibrate_Planar_Mono|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Fisheye Calibration || [[Example_Calibrate_Planar_Fisheye|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Stereo Calibration || [[Example_Calibrate_Planar_Stereo|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Remove Distortion || [[Example_Remove_Lens_Distortion|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Equi to Pinhole || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye to Equi|| [[Example_Fisheye_To_Equirectangular|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Bundle Adjustment || [[Example Sparse Bundle Adjustment|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| 3D Stereo Cloud || [[Example_Stereo_Disparity_3D|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Monocular Stereo || [[Example_Stereo_Single_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Uncalibrated Stereo || [[Example_Three_View_Stereo_Uncalibrated|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Multi Baseline Stereo || [[Example_Multi_Baseline_Stereo|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Scene Reconstruction || [[Example_Multiview_Reconstruction_Dense|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Video Stabilization || [[Example_Video_Stabilization|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Video Mosaic || [[Example_Video_Mosaic|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Stereo || [[Example_Stereo_Visual_Odometry|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Mono Plane || [[Example_Visual_Odometry_Monocular_Plane|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: RGB-D || [[Example_Visual_Odometry_Depth|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
| Visualization&lt;br /&gt;
|-&lt;br /&gt;
| [[Android_support|Android]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Videos and Webcams|Video]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Kinect|Kinect]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Processing|Processing]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/PyBoof Python]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Example_Calibrate_Planar_Stereo&amp;diff=3275</id>
		<title>Example Calibrate Planar Stereo</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Example_Calibrate_Planar_Stereo&amp;diff=3275"/>
		<updated>2023-09-10T02:07:30Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;gallery heights=220 widths=500 &amp;gt;&lt;br /&gt;
Image:Uncalib_stereo.jpg|Image of a stereo pair before calibration.&lt;br /&gt;
Image:Calib_stereo.jpg|Image of a calibrated stereo pair.  Radial distortion has been removed.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example demonstrate how to calibrate a stereo camera system using a high level interface which automatically detects calibration targets in a set of stereo images.  After calibration the intrinsic parameters of each camera is found as well as their extrinsic relationship with each other. Both the square grid and chessboard patterns are supported by this example.  For a full description of the calibration process and instruction on how to do it yourself see the tutorial linked to below.&lt;br /&gt;
&lt;br /&gt;
Example File: [https://github.com/lessthanoptimal/BoofCV/blob/v1.1.0/examples/src/main/java/boofcv/examples/calibration/ExampleCalibrateStereo.java ExampleCalibrateStereo.java]&lt;br /&gt;
&lt;br /&gt;
Calibration Tutorial: [[Tutorial_Camera_Calibration|Wikipage]]&lt;br /&gt;
&lt;br /&gt;
Concepts:&lt;br /&gt;
* Camera calibration&lt;br /&gt;
* Lens distortion&lt;br /&gt;
* Intrinsic parameters&lt;br /&gt;
* Stereo Vision&lt;br /&gt;
&lt;br /&gt;
Related Examples:&lt;br /&gt;
* [[Example_Rectification_Calibrated| Calibrated Stereo Rectification]]&lt;br /&gt;
* [[Example_Calibrate_Planar_Mono| Monocular Camera Calibration]]&lt;br /&gt;
* [[Example_Remove_Lens_Distortion| Removing Lens Distortion]]&lt;br /&gt;
&lt;br /&gt;
= Example Code =&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Example of how to calibrate a stereo camera system using a planar calibration grid given a set of images.&lt;br /&gt;
 * Intrinsic camera parameters are estimated for both cameras individually, then extrinsic parameters&lt;br /&gt;
 * for the two cameras relative to each other are found   This example does not rectify the images, which is&lt;br /&gt;
 * required for some algorithms. See {@link boofcv.examples.stereo.ExampleRectifyCalibratedStereo}. Both square grid and chessboard targets&lt;br /&gt;
 * are demonstrated in this example. See calibration tutorial for a discussion of different target types and how to&lt;br /&gt;
 * collect good calibration images.&lt;br /&gt;
 *&lt;br /&gt;
 * All the image processing and calibration is taken care of inside of {@link CalibrateStereoPlanar}. The code below&lt;br /&gt;
 * loads calibration images as inputs, calibrates, and saves results to an XML file. See in code comments for tuning&lt;br /&gt;
 * and implementation issues.&lt;br /&gt;
 *&lt;br /&gt;
 * @author Peter Abeles&lt;br /&gt;
 * @see boofcv.examples.stereo.ExampleRectifyCalibratedStereo&lt;br /&gt;
 * @see CalibrateStereoPlanar&lt;br /&gt;
 */&lt;br /&gt;
public class ExampleCalibrateStereo {&lt;br /&gt;
&lt;br /&gt;
	// Detects the target and calibration point inside the target&lt;br /&gt;
	DetectSingleFiducialCalibration detector;&lt;br /&gt;
&lt;br /&gt;
	// List of calibration images&lt;br /&gt;
	List&amp;lt;String&amp;gt; left;&lt;br /&gt;
	List&amp;lt;String&amp;gt; right;&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * ECoCheck target taken by a Zed stereo camera&lt;br /&gt;
	 */&lt;br /&gt;
	public void setupECoCheck() {&lt;br /&gt;
		// Creates a detector and specifies its physical characteristics&lt;br /&gt;
		detector = new MultiToSingleFiducialCalibration(FactoryFiducialCalibration.&lt;br /&gt;
				ecocheck(null,&lt;br /&gt;
						ConfigECoCheckMarkers.singleShape(/*rows*/ 9, /*cols*/ 7, /*markers*/ 1, /*square size*/ 30)));&lt;br /&gt;
&lt;br /&gt;
		String directory = UtilIO.pathExample(&amp;quot;calibration/stereo/Zed_ecocheck&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		left = UtilIO.listByPrefix(directory, &amp;quot;left&amp;quot;, null);&lt;br /&gt;
		right = UtilIO.listByPrefix(directory, &amp;quot;right&amp;quot;, null);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Square grid target taken by a PtGrey Bumblebee camera.&lt;br /&gt;
	 */&lt;br /&gt;
	public void setupSquareGrid() {&lt;br /&gt;
		// Creates a detector and specifies its physical characteristics&lt;br /&gt;
		detector = FactoryFiducialCalibration.squareGrid(null,&lt;br /&gt;
				new ConfigGridDimen(/*rows*/ 4, /*cols*/ 3, /*shape size*/ 30, /*shape distance*/ 30));&lt;br /&gt;
&lt;br /&gt;
		String directory = UtilIO.pathExample(&amp;quot;calibration/stereo/Bumblebee2_Square&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		left = UtilIO.listByPrefix(directory, &amp;quot;left&amp;quot;, null);&lt;br /&gt;
		right = UtilIO.listByPrefix(directory, &amp;quot;right&amp;quot;, null);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Chessboard target taken by a PtGrey Bumblebee camera.&lt;br /&gt;
	 */&lt;br /&gt;
	public void setupChessboard() {&lt;br /&gt;
		// Creates a detector and specifies its physical characteristics&lt;br /&gt;
		detector = FactoryFiducialCalibration.chessboardX(null,&lt;br /&gt;
				new ConfigGridDimen(/*rows*/ 7, /*cols*/ 5, /*shape size*/ 30));&lt;br /&gt;
&lt;br /&gt;
		String directory = UtilIO.pathExample(&amp;quot;calibration/stereo/Bumblebee2_Chess&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		left = UtilIO.listByPrefix(directory, &amp;quot;left&amp;quot;, null);&lt;br /&gt;
		right = UtilIO.listByPrefix(directory, &amp;quot;right&amp;quot;, null);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Process calibration images, compute intrinsic parameters, save to a file&lt;br /&gt;
	 */&lt;br /&gt;
	public void process() {&lt;br /&gt;
		// Declare and setup the calibration algorithm&lt;br /&gt;
		var calibrator = new CalibrateStereoPlanar(List.of(detector.getLayout()));&lt;br /&gt;
		calibrator.configure(/*zero skew*/true, /* radial */4, /* tangential */false);&lt;br /&gt;
&lt;br /&gt;
		// Uncomment to print more information to stdout&lt;br /&gt;
//		calibratorAlg.setVerbose(System.out,null);&lt;br /&gt;
&lt;br /&gt;
		// ensure the lists are in the same order&lt;br /&gt;
		Collections.sort(left);&lt;br /&gt;
		Collections.sort(right);&lt;br /&gt;
&lt;br /&gt;
		List&amp;lt;String&amp;gt; usedImages = new ArrayList&amp;lt;&amp;gt;();&lt;br /&gt;
		for (int i = 0; i &amp;lt; left.size(); i++) {&lt;br /&gt;
			BufferedImage l = UtilImageIO.loadImageNotNull(left.get(i));&lt;br /&gt;
			BufferedImage r = UtilImageIO.loadImageNotNull(right.get(i));&lt;br /&gt;
&lt;br /&gt;
			GrayF32 imageLeft = ConvertBufferedImage.convertFrom(l, (GrayF32)null);&lt;br /&gt;
			GrayF32 imageRight = ConvertBufferedImage.convertFrom(r, (GrayF32)null);&lt;br /&gt;
&lt;br /&gt;
			if (i == 0) {&lt;br /&gt;
				// Initialize the system once we know the image size&lt;br /&gt;
				calibrator.initialize(new ImageDimension(imageLeft.width, imageLeft.height),&lt;br /&gt;
						new ImageDimension(imageRight.width, imageRight.height));&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			CalibrationObservation calibLeft, calibRight;&lt;br /&gt;
			if (!detector.process(imageLeft)) {&lt;br /&gt;
				System.out.println(&amp;quot;Failed to detect target in &amp;quot; + left.get(i));&lt;br /&gt;
				continue;&lt;br /&gt;
			}&lt;br /&gt;
			calibLeft = detector.getDetectedPoints();&lt;br /&gt;
			if (!detector.process(imageRight)) {&lt;br /&gt;
				System.out.println(&amp;quot;Failed to detect target in &amp;quot; + right.get(i));&lt;br /&gt;
				continue;&lt;br /&gt;
			}&lt;br /&gt;
			calibRight = detector.getDetectedPoints();&lt;br /&gt;
&lt;br /&gt;
			calibrator.addPair(calibLeft.target, calibLeft.points, calibRight.points);&lt;br /&gt;
			usedImages.add(left.get(i));&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// Process and compute calibration parameters&lt;br /&gt;
		StereoParameters stereoCalib = calibrator.process();&lt;br /&gt;
&lt;br /&gt;
		// print out information on its accuracy and errors&lt;br /&gt;
		calibrator.computeQualityText(usedImages);&lt;br /&gt;
&lt;br /&gt;
		// save results to a file and print out&lt;br /&gt;
		CalibrationIO.save(stereoCalib, &amp;quot;stereo.yaml&amp;quot;);&lt;br /&gt;
		stereoCalib.print();&lt;br /&gt;
&lt;br /&gt;
		// Note that the stereo baseline translation will be specified in the same units as the calibration grid.&lt;br /&gt;
		// Which is in millimeters (mm) in this example.&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public static void main( String[] args ) {&lt;br /&gt;
		var alg = new ExampleCalibrateStereo();&lt;br /&gt;
&lt;br /&gt;
		// Strongly recommended that ECoCheck target is used as it allows you to entirely fill in left and right&lt;br /&gt;
		// stereo images since it allows for partially observed targets&lt;br /&gt;
		alg.setupECoCheck();&lt;br /&gt;
//		alg.setupChessboard();&lt;br /&gt;
//		alg.setupSquareGrid();&lt;br /&gt;
&lt;br /&gt;
		// compute and save results&lt;br /&gt;
		alg.process();&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Example_Calibrate_Planar_Multi&amp;diff=3274</id>
		<title>Example Calibrate Planar Multi</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Example_Calibrate_Planar_Multi&amp;diff=3274"/>
		<updated>2023-09-10T02:06:45Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Example of calibrating a multi camera system from one planar calibration target. It&amp;#039;s assumed that all the cameras are synchronized. They can be either stationary with a moving target or moving with a stationary target.&lt;br /&gt;
&lt;br /&gt;
Example File: [https://github.com/lessthanoptimal/BoofCV/blob/v1.1.0/examples/src/main/java/boofcv/examples/calibration/ExampleCalibrateMulti.java ExampleCalibrateMulti.java]&lt;br /&gt;
&lt;br /&gt;
Calibration Tutorial: [[Tutorial_Camera_Calibration|Wikipage]]&lt;br /&gt;
&lt;br /&gt;
Concepts:&lt;br /&gt;
* Camera calibration&lt;br /&gt;
* Lens distortion&lt;br /&gt;
* Intrinsic parameters&lt;br /&gt;
&lt;br /&gt;
Related Examples:&lt;br /&gt;
* [[Example_Calibrate_Planar_Mono| Monocular Camera Calibration]]&lt;br /&gt;
* [[Example_Calibrate_Planar_Stereo| Stereo Camera Calibration]]&lt;br /&gt;
* [[Example_Remove_Lens_Distortion| Removing Lens Distortion]]&lt;br /&gt;
&lt;br /&gt;
= Example Code =&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Demonstrates calibration of a N-camera system. This could be a three camera stereo system, 30 cameras in a ring,&lt;br /&gt;
 * or any similar variant.&lt;br /&gt;
 *&lt;br /&gt;
 * @author Peter Abeles&lt;br /&gt;
 */&lt;br /&gt;
public class ExampleCalibrateMulti {&lt;br /&gt;
	public static void main( String[] args ) {&lt;br /&gt;
		// Creates a detector and specifies its physical characteristics&lt;br /&gt;
		// Size units are not explicitly specified. You just need to be consistent.&lt;br /&gt;
		CalibrationDetectorMultiECoCheck detector = FactoryFiducialCalibration.ecocheck(null,&lt;br /&gt;
				ConfigECoCheckMarkers.parse(&amp;quot;14x10n1&amp;quot;, /* square size */1.0));&lt;br /&gt;
&lt;br /&gt;
		String directory = UtilIO.pathExample(&amp;quot;calibration/trinocular/&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		// Images for each camera are in their own directory&lt;br /&gt;
		List&amp;lt;String&amp;gt; left = UtilIO.listSmartImages(directory + &amp;quot;left&amp;quot;, true);&lt;br /&gt;
		List&amp;lt;String&amp;gt; middle = UtilIO.listSmartImages(directory + &amp;quot;middle&amp;quot;, true);&lt;br /&gt;
		List&amp;lt;String&amp;gt; right = UtilIO.listSmartImages(directory + &amp;quot;right&amp;quot;, true);&lt;br /&gt;
&lt;br /&gt;
		// Configure the calibration class for this scenario&lt;br /&gt;
		var calibrator = new CalibrateMultiPlanar();&lt;br /&gt;
		// Tell it what type of camera model to use&lt;br /&gt;
		calibrator.getCalibratorMono().configurePinhole(true, 3, false);&lt;br /&gt;
		calibrator.initialize(/*num cameras*/3, /*num targets*/ detector.getTotalUniqueMarkers());&lt;br /&gt;
		calibrator.setTargetLayouts(detector.getLayouts());&lt;br /&gt;
		calibrator.setCameraProperties(0, 1224, 1024);&lt;br /&gt;
		calibrator.setCameraProperties(1, 1224, 1024);&lt;br /&gt;
		calibrator.setCameraProperties(2, 1224, 1024);&lt;br /&gt;
&lt;br /&gt;
		for (int imageIdx = 0; imageIdx &amp;lt; left.size(); imageIdx++) {&lt;br /&gt;
			System.out.print(&amp;quot;image set &amp;quot; + imageIdx + &amp;quot;, landmark count:&amp;quot;);&lt;br /&gt;
			// Detect calibration targets and save results into a synchronized frame. It&amp;#039;s assumed that each&lt;br /&gt;
			// set of images was taken at the exact moment in time&lt;br /&gt;
			GrayF32 imageLeft = UtilImageIO.loadImage(left.get(imageIdx), GrayF32.class);&lt;br /&gt;
			GrayF32 imageMiddle = UtilImageIO.loadImage(middle.get(imageIdx), GrayF32.class);&lt;br /&gt;
			GrayF32 imageRight = UtilImageIO.loadImage(right.get(imageIdx), GrayF32.class);&lt;br /&gt;
&lt;br /&gt;
			var syncObs = new SynchronizedCalObs();&lt;br /&gt;
			addCameraObservations(0, imageLeft, detector, syncObs);&lt;br /&gt;
			addCameraObservations(1, imageMiddle, detector, syncObs);&lt;br /&gt;
			addCameraObservations(2, imageRight, detector, syncObs);&lt;br /&gt;
			System.out.println();&lt;br /&gt;
&lt;br /&gt;
			calibrator.addObservation(syncObs);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		System.out.println(&amp;quot;Performing calibration&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		// Print out optimization results. Can help you see if something has gone wrong&lt;br /&gt;
		calibrator.getBundleUtils().sba.setVerbose(System.out, null);&lt;br /&gt;
		BoofMiscOps.checkTrue(calibrator.process(), &amp;quot;Calibration Failed!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		System.out.println(calibrator.computeQualityText());&lt;br /&gt;
&lt;br /&gt;
		MultiCameraCalibParams params = calibrator.getResults();&lt;br /&gt;
		CalibrationIO.save(params, &amp;quot;multi_camera.yaml&amp;quot;);&lt;br /&gt;
		System.out.println(params.toStringFormat());&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	private static void addCameraObservations( int cameraID, GrayF32 image,&lt;br /&gt;
											   CalibrationDetectorMultiECoCheck detector, SynchronizedCalObs dst ) {&lt;br /&gt;
&lt;br /&gt;
		// Find calibration targets inside the image&lt;br /&gt;
		detector.process(image);&lt;br /&gt;
&lt;br /&gt;
		// Find the target which matches the expected target ID&lt;br /&gt;
		var set = dst.cameras.grow();&lt;br /&gt;
		set.cameraID = cameraID;&lt;br /&gt;
		for (int i = 0; i &amp;lt; detector.getDetectionCount(); i++) {&lt;br /&gt;
			CalibrationObservation o = detector.getDetectedPoints(i);&lt;br /&gt;
			if (o.target != 0)&lt;br /&gt;
				continue;&lt;br /&gt;
			set.targets.grow().setTo(o);&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// Print number of calibration points it found&lt;br /&gt;
		System.out.print(&amp;quot; &amp;quot; + set.targets.getTail().points.size());&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Example_Calibrate_Planar_Mono&amp;diff=3273</id>
		<title>Example Calibrate Planar Mono</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Example_Calibrate_Planar_Mono&amp;diff=3273"/>
		<updated>2023-09-10T02:05:37Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;gallery heights=300 widths=610 &amp;gt;&lt;br /&gt;
Image:Calib_mono.jpg|Left uncalibrated.  Right calibrated with lens distortion removed.  Numbers are super imposed on the image to show calibration points.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how to use a high level calibration class that automatically detects calibration targets as viewed from a single (monocular) camera in a set of images.  After processing the images the intrinsic camera parameters and lens distortion are saved to an XML file.  Both the square grid and chessboard patterns are supported by this example.  For a full description of the calibration process and instruction on how to do it yourself see the tutorial linked to below.&lt;br /&gt;
&lt;br /&gt;
Example File: [https://github.com/lessthanoptimal/BoofCV/blob/v1.1.0/examples/src/main/java/boofcv/examples/calibration/ExampleCalibrateMonocular.java ExampleCalibrateMonocular.java]&lt;br /&gt;
&lt;br /&gt;
Calibration Tutorial: [[Tutorial_Camera_Calibration|Wikipage]]&lt;br /&gt;
&lt;br /&gt;
Concepts:&lt;br /&gt;
* Camera calibration&lt;br /&gt;
* Lens distortion&lt;br /&gt;
* Intrinsic parameters&lt;br /&gt;
&lt;br /&gt;
Related Examples:&lt;br /&gt;
* [[Example_Calibrate_Planar_Stereo| Stereo Camera Calibration]]&lt;br /&gt;
* [[Example_Remove_Lens_Distortion| Removing Lens Distortion]]&lt;br /&gt;
&lt;br /&gt;
= Example Code =&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Example of how to calibrate a single (monocular) camera using a high level interface. Depending on the calibration&lt;br /&gt;
 * target detector and target type, the entire target might need to be visible in the image. All camera images&lt;br /&gt;
 * should be in focus and that target evenly spread through out the images. In particular the edges of the image&lt;br /&gt;
 * should be covered.&lt;br /&gt;
 *&lt;br /&gt;
 * After processing both intrinsic camera parameters and lens distortion are estimated. Square grid and chessboard&lt;br /&gt;
 * targets are demonstrated by this example. See calibration tutorial for a discussion of different target types&lt;br /&gt;
 * and how to collect good calibration images.&lt;br /&gt;
 *&lt;br /&gt;
 * All the image processing and calibration is taken care of inside of {@link CalibrateMonoPlanar}. The code below&lt;br /&gt;
 * loads calibration images as inputs, calibrates, and saves results to an XML file. See in code comments for tuning&lt;br /&gt;
 * and implementation issues.&lt;br /&gt;
 *&lt;br /&gt;
 * @author Peter Abeles&lt;br /&gt;
 * @see CalibrateMonoPlanar&lt;br /&gt;
 */&lt;br /&gt;
public class ExampleCalibrateMonocular {&lt;br /&gt;
	public static void main( String[] args ) {&lt;br /&gt;
		DetectSingleFiducialCalibration detector;&lt;br /&gt;
		List&amp;lt;String&amp;gt; images;&lt;br /&gt;
&lt;br /&gt;
		// Regular Circle Example&lt;br /&gt;
//		detector = FactoryFiducialCalibration.circleRegularGrid(null, new ConfigGridDimen(/*numRows*/ 8, /*numCols*/ 10, 1.5, 2.5));&lt;br /&gt;
//		images = UtilIO.listByPrefix(UtilIO.pathExample(&amp;quot;calibration/mono/Sony_DSC-HX5V_CircleRegular&amp;quot;),&amp;quot;image&amp;quot;, null);&lt;br /&gt;
&lt;br /&gt;
		// Hexagonal Circle Example&lt;br /&gt;
//		detector = FactoryFiducialCalibration.circleHexagonalGrid(null, new ConfigGridDimen(/*numRows*/ 24, /*numCols*/ 28, 1, 1.2));&lt;br /&gt;
//		images = UtilIO.listByPrefix(UtilIO.pathExample(&amp;quot;calibration/mono/Sony_DSC-HX5V_CircleHexagonal&amp;quot;),&amp;quot;image&amp;quot;, null);&lt;br /&gt;
&lt;br /&gt;
		// Square Grid example&lt;br /&gt;
//		detector = FactoryFiducialCalibration.squareGrid(null, new ConfigGridDimen(/*numRows*/ 4, /*numCols*/ 3, 30, 30));&lt;br /&gt;
//		images = UtilIO.listByPrefix(UtilIO.pathExample(&amp;quot;calibration/stereo/Bumblebee2_Square&amp;quot;),&amp;quot;left&amp;quot;, null);&lt;br /&gt;
&lt;br /&gt;
		// ECoCheck Example&lt;br /&gt;
//		detector = new MultiToSingleFiducialCalibration(FactoryFiducialCalibration.&lt;br /&gt;
//				ecocheck(null, ConfigECoCheckMarkers.&lt;br /&gt;
//						singleShape(/*numRows*/ 9, /*numCols*/ 7, /*num markers*/ 1, /* square size */ 30)));&lt;br /&gt;
//		images = UtilIO.listByPrefix(UtilIO.pathExample(&amp;quot;calibration/stereo/Zed_ecocheck&amp;quot;), &amp;quot;left&amp;quot;, null);&lt;br /&gt;
&lt;br /&gt;
		// Chessboard Example&lt;br /&gt;
		detector = FactoryFiducialCalibration.chessboardX(null,&lt;br /&gt;
				new ConfigGridDimen(/*numRows*/ 7,/*numCols*/ 5,/*shapeSize*/ 30));&lt;br /&gt;
		images = UtilIO.listByPrefix(UtilIO.pathExample(&amp;quot;calibration/stereo/Bumblebee2_Chess&amp;quot;), &amp;quot;left&amp;quot;, null);&lt;br /&gt;
&lt;br /&gt;
		// Declare and setup the calibration algorithm&lt;br /&gt;
		var calibrator = new CalibrateMonoPlanar();&lt;br /&gt;
&lt;br /&gt;
		// tell it type type of target and which intrinsic parameters to estimate&lt;br /&gt;
		calibrator.configurePinhole(&lt;br /&gt;
				/*assumeZeroSkew*/ true,&lt;br /&gt;
				/*numRadialParam*/ 2,&lt;br /&gt;
				/*includeTangential*/ false);&lt;br /&gt;
&lt;br /&gt;
		var usedImages = new ArrayList&amp;lt;String&amp;gt;();&lt;br /&gt;
		for (String n : images) {&lt;br /&gt;
			BufferedImage input = UtilImageIO.loadImageNotNull(n);&lt;br /&gt;
			GrayF32 image = ConvertBufferedImage.convertFrom(input, (GrayF32)null);&lt;br /&gt;
			if (detector.process(image)) {&lt;br /&gt;
				// Need to tell it the image shape and the layout once&lt;br /&gt;
				if (usedImages.isEmpty())&lt;br /&gt;
					calibrator.initialize(image.getWidth(), image.getHeight(), List.of(detector.getLayout()));&lt;br /&gt;
&lt;br /&gt;
				calibrator.addImage(detector.getDetectedPoints().copy());&lt;br /&gt;
				usedImages.add(n);&lt;br /&gt;
			} else {&lt;br /&gt;
				System.err.println(&amp;quot;Failed to detect target in &amp;quot; + n);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		// process and compute intrinsic parameters&lt;br /&gt;
		CameraPinholeBrown intrinsic = calibrator.process();&lt;br /&gt;
&lt;br /&gt;
		// save results to a file and print out&lt;br /&gt;
		CalibrationIO.save(intrinsic, &amp;quot;intrinsic.yaml&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		System.out.println(calibrator.computeQualityText(usedImages));&lt;br /&gt;
		System.out.println();&lt;br /&gt;
		System.out.println(&amp;quot;--- Intrinsic Parameters ---&amp;quot;);&lt;br /&gt;
		System.out.println();&lt;br /&gt;
		intrinsic.print();&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Example_Calibrate_Planar_Fisheye&amp;diff=3272</id>
		<title>Example Calibrate Planar Fisheye</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Example_Calibrate_Planar_Fisheye&amp;diff=3272"/>
		<updated>2023-09-10T02:04:53Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;gallery heights=400 widths=400 &amp;gt;&lt;br /&gt;
Image:Calib_fisheye_chessboard.jpg|Detected Calibration Target in a Fisheye Camera.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how to compute the intrinsic camera parameters for a fisheye camera lens. Fisheye lenses exhibit significantly more distortion than regular lenses with a more narrow field of view. Its not unusual for a fisheye lens to have a FOV of 185 degrees. The calibration process is very similar to regular cameras. A planar calibration target is shown at different angles across the entire field of view. The main difference is the camera model.&lt;br /&gt;
&lt;br /&gt;
Example File: [https://github.com/lessthanoptimal/BoofCV/blob/v1.1.0/examples/src/main/java/boofcv/examples/calibration/ExampleCalibrateFisheye.java ExampleCalibrateFisheye.java]&lt;br /&gt;
&lt;br /&gt;
Calibration Tutorial: [[Tutorial_Camera_Calibration|Wikipage]]&lt;br /&gt;
&lt;br /&gt;
Concepts:&lt;br /&gt;
* Camera calibration&lt;br /&gt;
* Fisheye Lens distortion&lt;br /&gt;
* Intrinsic parameters&lt;br /&gt;
&lt;br /&gt;
Relevant Videos:&lt;br /&gt;
* [https://youtu.be/TGg-xgTyaU8?t=69 YouTube Video]&lt;br /&gt;
&lt;br /&gt;
Related Examples:&lt;br /&gt;
* [[Example_Calibrate_Planar_Mono| Calibrate Regular Lenses ]]&lt;br /&gt;
&lt;br /&gt;
= Example Code =&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Example of how to calibrate a single (monocular) fisheye camera using a high level interface. This example&lt;br /&gt;
 * for the most part follows the same routine as {@link ExampleCalibrateMonocular}. Fisheye cameras tend to require&lt;br /&gt;
 * more images to properly calibrate. Often people will use larger calibration targets too that are easier to&lt;br /&gt;
 * see at a distance and cover more of the fisheye&amp;#039;s camera large FOV.&lt;br /&gt;
 *&lt;br /&gt;
 * @author Peter Abeles&lt;br /&gt;
 * @see CalibrateMonoPlanar&lt;br /&gt;
 */&lt;br /&gt;
public class ExampleCalibrateFisheye {&lt;br /&gt;
	public static void main( String[] args ) {&lt;br /&gt;
		DetectSingleFiducialCalibration detector;&lt;br /&gt;
&lt;br /&gt;
		// Circle based calibration targets are not recommended because the sever lens distortion will change&lt;br /&gt;
		// the apparent location of tangent points.&lt;br /&gt;
&lt;br /&gt;
		// Square Grid example&lt;br /&gt;
//		detector = FactoryFiducialCalibration.squareGrid(null, new ConfigGridDimen(/*rows*/ 4, /*cols*/ 3, /*size*/ 30, /*space*/ 30));&lt;br /&gt;
//		images = UtilIO.listAll(UtilIO.pathExample(&amp;quot;calibration/fisheye/square_grid&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
//		 Chessboard Example&lt;br /&gt;
		detector = FactoryFiducialCalibration.chessboardX(null, new ConfigGridDimen(/*rows*/7, /*cols*/5, /*size*/30));&lt;br /&gt;
		List&amp;lt;String&amp;gt; images = UtilIO.listAll(UtilIO.pathExample(&amp;quot;calibration/fisheye/chessboard&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
		// Declare and setup the calibration algorithm&lt;br /&gt;
		var calibrator = new CalibrateMonoPlanar();&lt;br /&gt;
&lt;br /&gt;
		// Specify the camera model to use. Here are a few examples.&lt;br /&gt;
		//&lt;br /&gt;
		calibrator.configureUniversalOmni( /*zeroSkew*/ true, /*radial*/ 2, /*tangential*/ false);&lt;br /&gt;
		// it&amp;#039;s also possible to fix the mirror offset parameter&lt;br /&gt;
		// 0 = pinhole camera. 1 = fisheye&lt;br /&gt;
//		calibrationAlg.configureUniversalOmni( /*zeroSkew*/ true, /*radial*/ 2, /*tangential*/ false, /*offset*/ 1.0);&lt;br /&gt;
		// Another popular model is Kannala-Brandt. Most people just use the symmetric terms.&lt;br /&gt;
//		calibrationAlg.configureKannalaBrandt( /*zeroSkew*/ true, /*symmetric*/ 5, /*asymmetric*/ 0);&lt;br /&gt;
&lt;br /&gt;
		var usedImages = new ArrayList&amp;lt;String&amp;gt;();&lt;br /&gt;
		for (String n : images) {&lt;br /&gt;
			BufferedImage input = UtilImageIO.loadImage(n);&lt;br /&gt;
			if (input == null)&lt;br /&gt;
				continue;&lt;br /&gt;
			GrayF32 image = ConvertBufferedImage.convertFrom(input, (GrayF32)null);&lt;br /&gt;
			if (detector.process(image)) {&lt;br /&gt;
				// Need to tell it the image shape and the layout once&lt;br /&gt;
				if (usedImages.isEmpty())&lt;br /&gt;
					calibrator.initialize(image.getWidth(), image.getHeight(), List.of(detector.getLayout()));&lt;br /&gt;
				calibrator.addImage(detector.getDetectedPoints().copy());&lt;br /&gt;
				usedImages.add(n);&lt;br /&gt;
			} else {&lt;br /&gt;
				System.err.println(&amp;quot;Failed to detect target in &amp;quot; + n);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		// process and compute intrinsic parameters&lt;br /&gt;
		CameraModel intrinsic = calibrator.process();&lt;br /&gt;
&lt;br /&gt;
		// save results to a file and print out&lt;br /&gt;
		CalibrationIO.save(intrinsic, &amp;quot;fisheye.yaml&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		System.out.println(calibrator.computeQualityText(usedImages));&lt;br /&gt;
		System.out.println();&lt;br /&gt;
		System.out.println(&amp;quot;--- Intrinsic Parameters ---&amp;quot;);&lt;br /&gt;
		System.out.println();&lt;br /&gt;
		intrinsic.print();&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Download&amp;diff=3271</id>
		<title>Download</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Download&amp;diff=3271"/>
		<updated>2023-08-21T15:37:16Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BoofCV is available from its central repository at Github or through periodic releases.  Below are links to the latest stable release hosted on SourceForge.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Latest Stable Release:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* [https://sourceforge.net/projects/boofcv/files/v1.0.0/ Jars and Source Code]&lt;br /&gt;
* [https://github.com/lessthanoptimal/BoofCV/blob/v1.0.0/change.txt Change Log]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Pre-Built Applications:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* [[Applications#Examples_and_Demonstrations| Examples and Demonstrations ]]&lt;br /&gt;
&lt;br /&gt;
If you encounter any problems getting BoofCV up and running, please let us know!  A bug might have slipped through testing or if the instructions are not clear we would like to know.&lt;br /&gt;
&lt;br /&gt;
= Java Version =&lt;br /&gt;
&lt;br /&gt;
To run BoofCV requires Java 11 and above. Building BoofCV requires Java 17, but if you use the build in Gradle script that is handled for you.&lt;br /&gt;
&lt;br /&gt;
Where to download the Java Virtual Machine&lt;br /&gt;
* https://www.azul.com/downloads/zulu/&lt;br /&gt;
* https://adoptopenjdk.net/&lt;br /&gt;
&lt;br /&gt;
NOTE: Version 0.39 and before maintained compatibility with Java 8. &lt;br /&gt;
&lt;br /&gt;
= Maven Central =&lt;br /&gt;
The easiest way to use boofcv is to reference its jars on [https://search.maven.org/search?q=g:org.boofcv Maven Central].  See below for Maven and Gradle code.  BoofCV is broken up into many modules.  To make it easier to use BoofCV all of its core functionality can be referenced using the &amp;#039;all&amp;#039; module.  Individual modules in &amp;quot;integration&amp;quot; still must be referenced individually.&lt;br /&gt;
&lt;br /&gt;
Artifact List&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-core&amp;#039;&amp;#039; : All the core functionality of BoofCV.&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-all&amp;#039;&amp;#039; : All the core and integration packages in BoofCV. This can be very large. You probably want core!&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-android&amp;#039;&amp;#039; : [http://developer.android.com/index.html Android] support &lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-WebcamCapture&amp;#039;&amp;#039; : [http://webcam-capture.sarxos.pl/ Webcam Capture support]&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-javacv&amp;#039;&amp;#039; : [https://github.com/bytedeco/javacv JavaCV] (Reading OpenCV files)&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-ffmpeg&amp;#039;&amp;#039; : [https://github.com/bytedeco/javacpp-presets javacpp-presets] Reading videos&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-swing&amp;#039;&amp;#039; : Visualization using Java Swing&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-jcodec&amp;#039;&amp;#039; : [http://jcodec.org/ jcodec] Pure Java (and buggy) library for reading videos.&lt;br /&gt;
&lt;br /&gt;
== Gradle Dependencies ==&lt;br /&gt;
&lt;br /&gt;
Here are some examples for how to add BoofCV to your Gradle project. You will need to replace $VERSION with the latest version of BoofCV, e.g. 1.0.0. If you just want image processing, with very few external dependencies, just include the following in your Gradle script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
api(&amp;quot;org.boofcv:boofcv-core:$VERSION&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
It is possible to include only the modules inside of core that you need. While not difficult, you will need to learn more about how BoofCV is structured.&lt;br /&gt;
&lt;br /&gt;
Since this does not include GUI or Webcam code most of the examples will not run! Here&amp;#039;s how you can add them:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&amp;#039;boofcv-core&amp;#039;,&amp;#039;boofcv-swing&amp;#039;,&amp;#039;boofcv-WebcamCapture&amp;#039;,&amp;#039;demonstrations&amp;#039;].each&lt;br /&gt;
    { String a -&amp;gt; compile group: &amp;#039;org.boofcv&amp;#039;, name: a, version: VERSION }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Deep Learning does add some external dependencies that most people don&amp;#039;t need. In the future that might become an optional dependency. For now look at [[Optimizing BoofCV]] for more complex ways to reduce the jar size.&lt;br /&gt;
&lt;br /&gt;
= Bleeding Edge = &lt;br /&gt;
&lt;br /&gt;
The absolutely latest code is available on Github. This code should be considered developmental and may or may not work. Please follow build instructions included in the [https://github.com/lessthanoptimal/BoofCV#building-from-source README.MD] as those will be up to date. There is also a (slightly) out of date [https://youtu.be/qMTtdiujAtQ?t=67 YouTube Video].&lt;br /&gt;
&lt;br /&gt;
= Past Releases =&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; width=600px cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
! Version !! Link !! Description &lt;br /&gt;
|-&lt;br /&gt;
| v1.0.0 || [https://sourceforge.net/projects/boofcv/files/v1.0.0 Link] || New version number system. Camera state in bundle adjustment&lt;br /&gt;
|-&lt;br /&gt;
| v0.44 || [https://sourceforge.net/projects/boofcv/files/v0.44 Link] || Android Fragments,  &lt;br /&gt;
|-&lt;br /&gt;
| v0.43.1 || [https://sourceforge.net/projects/boofcv/files/v0.43 Link] || Mesh viewer/rendering, STL files, bug fixes &lt;br /&gt;
|-&lt;br /&gt;
| v0.42 || [https://sourceforge.net/projects/boofcv/files/v0.42 Link] || Bug fixes, new filters, OBJ support&lt;br /&gt;
|-&lt;br /&gt;
| v0.41 || [https://sourceforge.net/projects/boofcv/files/v0.41 Link] || Aztec Code, Android cameras, multi camera calibration, mesh&lt;br /&gt;
|-&lt;br /&gt;
| v0.40.1 || [https://sourceforge.net/projects/boofcv/files/v0.40 Link] || Micro QR Code and strict null enforcement&lt;br /&gt;
|-&lt;br /&gt;
| v0.39.1 || [https://sourceforge.net/projects/boofcv/files/v0.39.1 Link] || Markers (ECoCheck, AruCo), Calibration Apps, Simulation&lt;br /&gt;
|-&lt;br /&gt;
| v0.38 || [https://sourceforge.net/projects/boofcv/files/v0.38 Link] || Better MVS and Scene Recognition&lt;br /&gt;
|-&lt;br /&gt;
| v0.37 || [https://sourceforge.net/projects/boofcv/files/v0.37 Link] || Mutli-View Stereo&lt;br /&gt;
|-&lt;br /&gt;
| v0.36 || [https://sourceforge.net/projects/boofcv/files/v0.36 Link] || Random dot markers, SBA in Visual odometry, visualization&lt;br /&gt;
|-&lt;br /&gt;
| v0.35 || [https://sourceforge.net/projects/boofcv/files/v0.35 Link] || Even better Chessboard, stereo, various&lt;br /&gt;
|-&lt;br /&gt;
| v0.34 || [https://sourceforge.net/projects/boofcv/files/v0.34 Link] || More Concurrency, Chessboard, Lines&lt;br /&gt;
|-&lt;br /&gt;
| v0.33 || [https://sourceforge.net/projects/boofcv/files/v0.33.1 Link] || Concurrency, SFM, QR Fixes&lt;br /&gt;
|-&lt;br /&gt;
| v0.32 || [https://sourceforge.net/projects/boofcv/files/v0.32 Link] || Uncalibrated Stereo&lt;br /&gt;
|-&lt;br /&gt;
| v0.31 || [https://sourceforge.net/projects/boofcv/files/v0.31 Link] || Sparse Bundle Adjustment&lt;br /&gt;
|-&lt;br /&gt;
| v0.30 || [https://sourceforge.net/projects/boofcv/files/v0.30 Link] || Android and SFM&lt;br /&gt;
|-&lt;br /&gt;
| v0.29 || [https://sourceforge.net/projects/boofcv/files/v0.29 Link] || BOverride, Background GMM, GVersion&lt;br /&gt;
|-&lt;br /&gt;
| v0.28 || [https://sourceforge.net/projects/boofcv/files/v0.28 Link] || Fisheye calibration, Hex target, QR Code, polyline&lt;br /&gt;
|-&lt;br /&gt;
| v0.27 || [https://sourceforge.net/projects/boofcv/files/v0.27 Link] || Module name changes, new calib target, new distortion&lt;br /&gt;
|-&lt;br /&gt;
| v0.26 || [https://sourceforge.net/projects/boofcv/files/v0.26 Link] || Critical bug fixes, more examples, improved asymmetric grid&lt;br /&gt;
|-&lt;br /&gt;
| v0.25 || [https://sourceforge.net/projects/boofcv/files/v0.25 Link] || 360 and fisheye support, Deep Learning, circle asym grid, ... etc&lt;br /&gt;
|-&lt;br /&gt;
| v0.24.1 || [https://sourceforge.net/projects/boofcv/files/v0.24.1 Link] || Fixed dependency on a SNAPSHOT &lt;br /&gt;
|-&lt;br /&gt;
| v0.24 || [https://sourceforge.net/projects/boofcv/files/v0.24 Link] || Replaced Xuggler with JavaCV&lt;br /&gt;
|-&lt;br /&gt;
| v0.23 || [https://sourceforge.net/projects/boofcv/files/v0.23 Link] || Refactoring of image names&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Main_Page&amp;diff=3270</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Main_Page&amp;diff=3270"/>
		<updated>2023-08-21T15:35:37Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&lt;br /&gt;
[[File:Boofcv_logo_circles_frontpage.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
BoofCV is an open source library written from scratch for real-time computer vision. Its functionality covers a range of subjects, low-level image processing, camera calibration, feature detection/tracking, structure-from-motion, fiducial detection, and recognition. BoofCV has been released under an Apache  2.0 license for both academic and commercial use.&lt;br /&gt;
&lt;br /&gt;
BoofCV is organized into several packages: &amp;#039;&amp;#039;image processing&amp;#039;&amp;#039;, &amp;#039;&amp;#039;features&amp;#039;&amp;#039;, &amp;#039;&amp;#039;geometric vision&amp;#039;&amp;#039;, &amp;#039;&amp;#039;calibration&amp;#039;&amp;#039;, &amp;#039;&amp;#039;recognition&amp;#039;&amp;#039;,&amp;#039;&amp;#039;visualize&amp;#039;&amp;#039;, and &amp;#039;&amp;#039;IO&amp;#039;&amp;#039;.  &amp;#039;&amp;#039;Image processing&amp;#039;&amp;#039; contains commonly used image processing functions which operate directly on pixels.  &amp;#039;&amp;#039;Features&amp;#039;&amp;#039; contains feature extraction algorithms for use in higher level operations.  &amp;#039;&amp;#039;Calibration&amp;#039;&amp;#039; has routines for determining the camera&amp;#039;s intrinsic and extrinsic parameters.  &amp;#039;&amp;#039;Recognition&amp;#039;&amp;#039; is for recognition and tracking complex visual objects.  &amp;#039;&amp;#039;Geometric vision&amp;#039;&amp;#039; is composed of routines for processing extracted image features using 2D and 3D geometry. &amp;#039;&amp;#039;Visualize&amp;#039;&amp;#039; has routines for rendering and displaying extracted features.  &amp;#039;&amp;#039;IO&amp;#039;&amp;#039; has input and output routines for different data structures.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| &lt;br /&gt;
|-&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/wgPzlokxbXw|300|center}}&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/O_yAdsT8d84|300|center}}&lt;br /&gt;
|-&lt;br /&gt;
! New calibration tools in v0.39&lt;br /&gt;
! Three View Self Calibration&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://www.ninox360.com/calibration-targets 2022-Nov: Create calibration targets in your browser]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://www.ninox360.com/barcode-scanner 2022-Nov: Barcode scanner webapp]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://medium.com/p/35b431fcccf1 2022-Jan: Article on scanning Micro QR Codes]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[[Tutorial_Camera_Calibration|2021-Oct: Camera Calibration Tutorial has been re-written.]]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://youtu.be/RCL5tSt189M 2021-Mar: Stereo Cloud from Mars Perseverance Rover]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:Loose-lips.jpg|125px|link=https://groups.google.com/group/boofcv]] ||&lt;br /&gt;
{| width=&amp;quot;400pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Current Release: &amp;#039;&amp;#039;v1.0.0&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Date: &amp;#039;&amp;#039;August 21, 2023&amp;#039;&amp;#039; &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://github.com/lessthanoptimal/BoofCV/blob/v1.0.0/change.txt Change Log]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://youtu.be/BbTPQ9mIoQU Video Summary v0.38]&lt;br /&gt;
|}&lt;br /&gt;
| [[File:Boofcv_bug_propaganda_poster_small.jpg|125px|link=https://github.com/lessthanoptimal/BoofCV/issues]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| width=&amp;quot;600pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; |  [[File:Ninox360_icon_logo_moto.png|400px|link=https://www.ninox360.com]]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | A start up from the creators of BoofCV.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-help-icon.png|100px|link=[[Manual]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Manual]]&lt;br /&gt;
|-&lt;br /&gt;
| [[FAQ | FAQ]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.boofcv.org/javadoc/ JavaDoc]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCV/issues Report Bug]&lt;br /&gt;
|-&lt;br /&gt;
| [https://groups.google.com/group/boofcv Message Board]&lt;br /&gt;
|-&lt;br /&gt;
| [[Papers and Reports| Papers/Reports]]&lt;br /&gt;
|} &lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-binary-icon.png|100px|link=[https://github.com/lessthanoptimal/BoofCV Source Code]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Download|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.youtube.com/user/BoofCV/videos Videos]&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Bounties| Bounties ]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Contributing|Contribute]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCPP BoofCPP]&lt;br /&gt;
|} &lt;br /&gt;
| width&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-graph-icon.png|100px|link=[[Performance:BoofCV]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Performance:BoofCV|Performance]]&lt;br /&gt;
|-&lt;br /&gt;
| [[BoofCV Roadmap | Road Map]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Validation:Algorithms | Validation]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Projects_Using_BoofCV | Users ]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Acknowledgements|Acknowledgements]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;SPAN STYLE=&amp;quot;font-size: 14pt;text-align:center&amp;quot;&amp;gt;Prebuild Stand Alone Applications&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Examples_and_Demonstrations|Examples / Demonstrations]] || Example and demonstration applications&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create QR Code|QR Code Generator]] || Create and print QR Codes&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Square_Binary|Square Fiducials]] || Binary/Image Square Fiducial Generator &lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Calibration_Fiducials|Calibration Targets]] || Calibration Target Generator&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Camera_Calibration|Calibration]] || Camera Calibration Application&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Undistort|Lens Undistortion]] ||  Batch Removal of Lens Distortion&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Downsize|Image Downsize]] ||  Batch Image Down Sampling with minimal aliasing&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
| colspan=5 style=&amp;quot;background-color:#ffffdd;&amp;quot; align=&amp;quot;center&amp;quot; |&lt;br /&gt;
== Capability Summary ==&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Image Processing &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Feature &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Recognition&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Geometric &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Integration&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Image Convolution || [[Example_Convolution|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Image Derivatives || [[Example_Image_Derivative|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Thresholding || [[Example_Thresholding|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Ops || [[Example_Binary_Image|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Space || [[Example_Color_Space|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interpolation || [[Example_Interpolation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Deformation || [[Example_Key_Point_Based_Deformation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Blur || [[Example_Image_Blur|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Enhancement || [[Example_Image_Enhancement|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Noise Removal || [[Example_Wavelet_Noise_Removal|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fourier Transform || [[Example_Discrete_Fourier_Transform|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Wavelet Decomposition || &lt;br /&gt;
|- &lt;br /&gt;
| Discrete Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Float Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Scale Space Image || &lt;br /&gt;
|-&lt;br /&gt;
| Equirectangular || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye Cameras || [[Example_Fisheye_To_Pinhole|Example]]&lt;br /&gt;
|&lt;br /&gt;
|} &lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Black Polygons || [[Example_Detect_Black_Polygons|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Black Ellipses || [[Example_Detect_Black_Ellipses|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interest Points || [[Example_Detect_Interest_Points|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Line Detection || [[Example_Detect_Lines|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Motion Detection || [[Example_Background_Moving_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Contours || [[Example_Binary_Image|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Polygon Fitting || [[Example_Fit_Polygon|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Ellipse Fitting || [[Example_Fit_Ellipse|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Template Matching || [[Example_Template_Matching|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Interest Points || [[Example_Detect_Describe_Interface|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Dense Features || [[Example_Dense_Image_Features|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Point Tracking || [[Example_Track_Point_Features|Example]]&lt;br /&gt;
|-  &lt;br /&gt;
| Non-max Suppression || [[Example_Non_Maximum_Suppression|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Dense Optical Flow || [[Example_Dense_Optical_Flow|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Superpixels || [[Example_Superpixels|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Color Segmentation || [[Example_Color_Segmentation|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Scene Recognition || [[Example_Scene_Recognition|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Image Lookup || [[Example_Color_Histogram_Lookup|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| KNN Classifier || [[Example_Scene_Classification|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| CNN Classifiers || [[Example_Image_Classification|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Object Tracking || [[Example_Tracker_Object|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fiducials || [[Tutorial_Fiducials|Tutorial]]&lt;br /&gt;
|-&lt;br /&gt;
| QR Codes || [[Tutorial_QRCodes|Tutorial]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| SFM || [[Tutorial_Geometric_Vision|Tutorial]] &lt;br /&gt;
|- &lt;br /&gt;
| Camera Calibration || [[Tutorial_Camera_Calibration|Tutorial]]&lt;br /&gt;
|- &lt;br /&gt;
| Mono Calibration || [[Example_Calibrate_Planar_Mono|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Fisheye Calibration || [[Example_Calibrate_Planar_Fisheye|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Stereo Calibration || [[Example_Calibrate_Planar_Stereo|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Remove Distortion || [[Example_Remove_Lens_Distortion|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Equi to Pinhole || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye to Equi|| [[Example_Fisheye_To_Equirectangular|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Bundle Adjustment || [[Example Sparse Bundle Adjustment|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| 3D Stereo Cloud || [[Example_Stereo_Disparity_3D|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Monocular Stereo || [[Example_Stereo_Single_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Uncalibrated Stereo || [[Example_Three_View_Stereo_Uncalibrated|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Multi Baseline Stereo || [[Example_Multi_Baseline_Stereo|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Scene Reconstruction || [[Example_Multiview_Reconstruction_Dense|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Video Stabilization || [[Example_Video_Stabilization|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Video Mosaic || [[Example_Video_Mosaic|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Stereo || [[Example_Stereo_Visual_Odometry|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Mono Plane || [[Example_Visual_Odometry_Monocular_Plane|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: RGB-D || [[Example_Visual_Odometry_Depth|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
| Visualization&lt;br /&gt;
|-&lt;br /&gt;
| [[Android_support|Android]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Videos and Webcams|Video]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Kinect|Kinect]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Processing|Processing]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/PyBoof Python]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Main_Page&amp;diff=3269</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Main_Page&amp;diff=3269"/>
		<updated>2023-08-21T15:20:00Z</updated>

		<summary type="html">&lt;p&gt;Peter: Removed protection from &amp;quot;Main Page&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&lt;br /&gt;
[[File:Boofcv_logo_circles_frontpage.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
BoofCV is an open source library written from scratch for real-time computer vision. Its functionality covers a range of subjects, low-level image processing, camera calibration, feature detection/tracking, structure-from-motion, fiducial detection, and recognition. BoofCV has been released under an Apache  2.0 license for both academic and commercial use.&lt;br /&gt;
&lt;br /&gt;
BoofCV is organized into several packages: &amp;#039;&amp;#039;image processing&amp;#039;&amp;#039;, &amp;#039;&amp;#039;features&amp;#039;&amp;#039;, &amp;#039;&amp;#039;geometric vision&amp;#039;&amp;#039;, &amp;#039;&amp;#039;calibration&amp;#039;&amp;#039;, &amp;#039;&amp;#039;recognition&amp;#039;&amp;#039;,&amp;#039;&amp;#039;visualize&amp;#039;&amp;#039;, and &amp;#039;&amp;#039;IO&amp;#039;&amp;#039;.  &amp;#039;&amp;#039;Image processing&amp;#039;&amp;#039; contains commonly used image processing functions which operate directly on pixels.  &amp;#039;&amp;#039;Features&amp;#039;&amp;#039; contains feature extraction algorithms for use in higher level operations.  &amp;#039;&amp;#039;Calibration&amp;#039;&amp;#039; has routines for determining the camera&amp;#039;s intrinsic and extrinsic parameters.  &amp;#039;&amp;#039;Recognition&amp;#039;&amp;#039; is for recognition and tracking complex visual objects.  &amp;#039;&amp;#039;Geometric vision&amp;#039;&amp;#039; is composed of routines for processing extracted image features using 2D and 3D geometry. &amp;#039;&amp;#039;Visualize&amp;#039;&amp;#039; has routines for rendering and displaying extracted features.  &amp;#039;&amp;#039;IO&amp;#039;&amp;#039; has input and output routines for different data structures.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| &lt;br /&gt;
|-&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/wgPzlokxbXw|300|center}}&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/O_yAdsT8d84|300|center}}&lt;br /&gt;
|-&lt;br /&gt;
! New calibration tools in v0.39&lt;br /&gt;
! Three View Self Calibration&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://www.ninox360.com/calibration-targets 2022-Nov: Create calibration targets in your browser]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://www.ninox360.com/barcode-scanner 2022-Nov: Barcode scanner webapp]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://medium.com/p/35b431fcccf1 2022-Jan: Article on scanning Micro QR Codes]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[[Tutorial_Camera_Calibration|2021-Oct: Camera Calibration Tutorial has been re-written.]]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://youtu.be/RCL5tSt189M 2021-Mar: Stereo Cloud from Mars Perseverance Rover]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:Loose-lips.jpg|125px|link=https://groups.google.com/group/boofcv]] ||&lt;br /&gt;
{| width=&amp;quot;400pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Current Release: &amp;#039;&amp;#039;v0.44&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Date: &amp;#039;&amp;#039;July 15, 2023&amp;#039;&amp;#039; &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://github.com/lessthanoptimal/BoofCV/blob/v0.44/change.txt Change Log]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://youtu.be/BbTPQ9mIoQU Video Summary v0.38]&lt;br /&gt;
|}&lt;br /&gt;
| [[File:Boofcv_bug_propaganda_poster_small.jpg|125px|link=https://github.com/lessthanoptimal/BoofCV/issues]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| width=&amp;quot;600pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; |  [[File:Ninox360_icon_logo_moto.png|400px|link=https://www.ninox360.com]]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | A start up from the creators of BoofCV.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-help-icon.png|100px|link=[[Manual]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Manual]]&lt;br /&gt;
|-&lt;br /&gt;
| [[FAQ | FAQ]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.boofcv.org/javadoc/ JavaDoc]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCV/issues Report Bug]&lt;br /&gt;
|-&lt;br /&gt;
| [https://groups.google.com/group/boofcv Message Board]&lt;br /&gt;
|-&lt;br /&gt;
| [[Papers and Reports| Papers/Reports]]&lt;br /&gt;
|} &lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-binary-icon.png|100px|link=[https://github.com/lessthanoptimal/BoofCV Source Code]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Download|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.youtube.com/user/BoofCV/videos Videos]&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Bounties| Bounties ]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Contributing|Contribute]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCPP BoofCPP]&lt;br /&gt;
|} &lt;br /&gt;
| width&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-graph-icon.png|100px|link=[[Performance:BoofCV]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Performance:BoofCV|Performance]]&lt;br /&gt;
|-&lt;br /&gt;
| [[BoofCV Roadmap | Road Map]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Validation:Algorithms | Validation]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Projects_Using_BoofCV | Users ]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Acknowledgements|Acknowledgements]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;SPAN STYLE=&amp;quot;font-size: 14pt;text-align:center&amp;quot;&amp;gt;Prebuild Stand Alone Applications&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Examples_and_Demonstrations|Examples / Demonstrations]] || Example and demonstration applications&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create QR Code|QR Code Generator]] || Create and print QR Codes&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Square_Binary|Square Fiducials]] || Binary/Image Square Fiducial Generator &lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Calibration_Fiducials|Calibration Targets]] || Calibration Target Generator&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Camera_Calibration|Calibration]] || Camera Calibration Application&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Undistort|Lens Undistortion]] ||  Batch Removal of Lens Distortion&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Downsize|Image Downsize]] ||  Batch Image Down Sampling with minimal aliasing&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
| colspan=5 style=&amp;quot;background-color:#ffffdd;&amp;quot; align=&amp;quot;center&amp;quot; |&lt;br /&gt;
== Capability Summary ==&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Image Processing &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Feature &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Recognition&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Geometric &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Integration&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Image Convolution || [[Example_Convolution|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Image Derivatives || [[Example_Image_Derivative|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Thresholding || [[Example_Thresholding|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Ops || [[Example_Binary_Image|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Space || [[Example_Color_Space|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interpolation || [[Example_Interpolation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Deformation || [[Example_Key_Point_Based_Deformation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Blur || [[Example_Image_Blur|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Enhancement || [[Example_Image_Enhancement|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Noise Removal || [[Example_Wavelet_Noise_Removal|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fourier Transform || [[Example_Discrete_Fourier_Transform|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Wavelet Decomposition || &lt;br /&gt;
|- &lt;br /&gt;
| Discrete Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Float Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Scale Space Image || &lt;br /&gt;
|-&lt;br /&gt;
| Equirectangular || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye Cameras || [[Example_Fisheye_To_Pinhole|Example]]&lt;br /&gt;
|&lt;br /&gt;
|} &lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Black Polygons || [[Example_Detect_Black_Polygons|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Black Ellipses || [[Example_Detect_Black_Ellipses|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interest Points || [[Example_Detect_Interest_Points|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Line Detection || [[Example_Detect_Lines|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Motion Detection || [[Example_Background_Moving_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Contours || [[Example_Binary_Image|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Polygon Fitting || [[Example_Fit_Polygon|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Ellipse Fitting || [[Example_Fit_Ellipse|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Template Matching || [[Example_Template_Matching|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Interest Points || [[Example_Detect_Describe_Interface|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Dense Features || [[Example_Dense_Image_Features|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Point Tracking || [[Example_Track_Point_Features|Example]]&lt;br /&gt;
|-  &lt;br /&gt;
| Non-max Suppression || [[Example_Non_Maximum_Suppression|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Dense Optical Flow || [[Example_Dense_Optical_Flow|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Superpixels || [[Example_Superpixels|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Color Segmentation || [[Example_Color_Segmentation|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Scene Recognition || [[Example_Scene_Recognition|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Image Lookup || [[Example_Color_Histogram_Lookup|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| KNN Classifier || [[Example_Scene_Classification|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| CNN Classifiers || [[Example_Image_Classification|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Object Tracking || [[Example_Tracker_Object|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fiducials || [[Tutorial_Fiducials|Tutorial]]&lt;br /&gt;
|-&lt;br /&gt;
| QR Codes || [[Tutorial_QRCodes|Tutorial]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| SFM || [[Tutorial_Geometric_Vision|Tutorial]] &lt;br /&gt;
|- &lt;br /&gt;
| Camera Calibration || [[Tutorial_Camera_Calibration|Tutorial]]&lt;br /&gt;
|- &lt;br /&gt;
| Mono Calibration || [[Example_Calibrate_Planar_Mono|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Fisheye Calibration || [[Example_Calibrate_Planar_Fisheye|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Stereo Calibration || [[Example_Calibrate_Planar_Stereo|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Remove Distortion || [[Example_Remove_Lens_Distortion|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Equi to Pinhole || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye to Equi|| [[Example_Fisheye_To_Equirectangular|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Bundle Adjustment || [[Example Sparse Bundle Adjustment|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| 3D Stereo Cloud || [[Example_Stereo_Disparity_3D|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Monocular Stereo || [[Example_Stereo_Single_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Uncalibrated Stereo || [[Example_Three_View_Stereo_Uncalibrated|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Multi Baseline Stereo || [[Example_Multi_Baseline_Stereo|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Scene Reconstruction || [[Example_Multiview_Reconstruction_Dense|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Video Stabilization || [[Example_Video_Stabilization|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Video Mosaic || [[Example_Video_Mosaic|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Stereo || [[Example_Stereo_Visual_Odometry|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Mono Plane || [[Example_Visual_Odometry_Monocular_Plane|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: RGB-D || [[Example_Visual_Odometry_Depth|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
| Visualization&lt;br /&gt;
|-&lt;br /&gt;
| [[Android_support|Android]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Videos and Webcams|Video]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Kinect|Kinect]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Processing|Processing]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/PyBoof Python]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Download&amp;diff=3268</id>
		<title>Download</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Download&amp;diff=3268"/>
		<updated>2023-07-15T22:35:57Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BoofCV is available from its central repository at Github or through periodic releases.  Below are links to the latest stable release hosted on SourceForge.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Latest Stable Release:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* [https://sourceforge.net/projects/boofcv/files/v0.44/ Jars and Source Code]&lt;br /&gt;
* [https://github.com/lessthanoptimal/BoofCV/blob/v0.44/change.txt Change Log]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Pre-Built Applications:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* [[Applications#Examples_and_Demonstrations| Examples and Demonstrations ]]&lt;br /&gt;
&lt;br /&gt;
If you encounter any problems getting BoofCV up and running, please let us know!  A bug might have slipped through testing or if the instructions are not clear we would like to know.&lt;br /&gt;
&lt;br /&gt;
= Java Version =&lt;br /&gt;
&lt;br /&gt;
To run BoofCV requires Java 11 and above. Building BoofCV requires Java 17, but if you use the build in Gradle script that is handled for you.&lt;br /&gt;
&lt;br /&gt;
Where to download the Java Virtual Machine&lt;br /&gt;
* https://www.azul.com/downloads/zulu/&lt;br /&gt;
* https://adoptopenjdk.net/&lt;br /&gt;
&lt;br /&gt;
NOTE: Version 0.39 and before maintained compatibility with Java 8. &lt;br /&gt;
&lt;br /&gt;
= Maven Central =&lt;br /&gt;
The easiest way to use boofcv is to reference its jars on [https://search.maven.org/search?q=g:org.boofcv Maven Central].  See below for Maven and Gradle code.  BoofCV is broken up into many modules.  To make it easier to use BoofCV all of its core functionality can be referenced using the &amp;#039;all&amp;#039; module.  Individual modules in &amp;quot;integration&amp;quot; still must be referenced individually.&lt;br /&gt;
&lt;br /&gt;
Artifact List&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-core&amp;#039;&amp;#039; : All the core functionality of BoofCV.&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-all&amp;#039;&amp;#039; : All the core and integration packages in BoofCV. This can be very large. You probably want core!&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-android&amp;#039;&amp;#039; : [http://developer.android.com/index.html Android] support &lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-WebcamCapture&amp;#039;&amp;#039; : [http://webcam-capture.sarxos.pl/ Webcam Capture support]&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-javacv&amp;#039;&amp;#039; : [https://github.com/bytedeco/javacv JavaCV] (Reading OpenCV files)&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-ffmpeg&amp;#039;&amp;#039; : [https://github.com/bytedeco/javacpp-presets javacpp-presets] Reading videos&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-swing&amp;#039;&amp;#039; : Visualization using Java Swing&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-jcodec&amp;#039;&amp;#039; : [http://jcodec.org/ jcodec] Pure Java (and buggy) library for reading videos.&lt;br /&gt;
&lt;br /&gt;
== Gradle Dependencies ==&lt;br /&gt;
&lt;br /&gt;
Here are some examples for how to add BoofCV to your Gradle project. You will need to replace $VERSION with the latest version of BoofCV, e.g. 0.43. If you just want image processing, with very few external dependencies, just include the following in your Gradle script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
api(&amp;quot;org.boofcv:boofcv-core:$VERSION&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
It is possible to include only the modules inside of core that you need. While not difficult, you will need to learn more about how BoofCV is structured.&lt;br /&gt;
&lt;br /&gt;
Since this does not include GUI or Webcam code most of the examples will not run! Here&amp;#039;s how you can add them:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&amp;#039;boofcv-core&amp;#039;,&amp;#039;boofcv-swing&amp;#039;,&amp;#039;boofcv-WebcamCapture&amp;#039;,&amp;#039;demonstrations&amp;#039;].each&lt;br /&gt;
    { String a -&amp;gt; compile group: &amp;#039;org.boofcv&amp;#039;, name: a, version: VERSION }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Deep Learning does add some external dependencies that most people don&amp;#039;t need. In the future that might become an optional dependency. For now look at [[Optimizing BoofCV]] for more complex ways to reduce the jar size.&lt;br /&gt;
&lt;br /&gt;
= Bleeding Edge = &lt;br /&gt;
&lt;br /&gt;
The absolutely latest code is available on Github. This code should be considered developmental and may or may not work. Please follow build instructions included in the [https://github.com/lessthanoptimal/BoofCV#building-from-source README.MD] as those will be up to date. There is also a (slightly) out of date [https://youtu.be/qMTtdiujAtQ?t=67 YouTube Video].&lt;br /&gt;
&lt;br /&gt;
= Past Releases =&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; width=600px cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
! Version !! Link !! Description &lt;br /&gt;
|-&lt;br /&gt;
| v0.44 || [https://sourceforge.net/projects/boofcv/files/v0.44 Link] || Android Fragments,  &lt;br /&gt;
|-&lt;br /&gt;
| v0.43.1 || [https://sourceforge.net/projects/boofcv/files/v0.43 Link] || Mesh viewer/rendering, STL files, bug fixes &lt;br /&gt;
|-&lt;br /&gt;
| v0.42 || [https://sourceforge.net/projects/boofcv/files/v0.42 Link] || Bug fixes, new filters, OBJ support&lt;br /&gt;
|-&lt;br /&gt;
| v0.41 || [https://sourceforge.net/projects/boofcv/files/v0.41 Link] || Aztec Code, Android cameras, multi camera calibration, mesh&lt;br /&gt;
|-&lt;br /&gt;
| v0.40.1 || [https://sourceforge.net/projects/boofcv/files/v0.40 Link] || Micro QR Code and strict null enforcement&lt;br /&gt;
|-&lt;br /&gt;
| v0.39.1 || [https://sourceforge.net/projects/boofcv/files/v0.39.1 Link] || Markers (ECoCheck, AruCo), Calibration Apps, Simulation&lt;br /&gt;
|-&lt;br /&gt;
| v0.38 || [https://sourceforge.net/projects/boofcv/files/v0.38 Link] || Better MVS and Scene Recognition&lt;br /&gt;
|-&lt;br /&gt;
| v0.37 || [https://sourceforge.net/projects/boofcv/files/v0.37 Link] || Mutli-View Stereo&lt;br /&gt;
|-&lt;br /&gt;
| v0.36 || [https://sourceforge.net/projects/boofcv/files/v0.36 Link] || Random dot markers, SBA in Visual odometry, visualization&lt;br /&gt;
|-&lt;br /&gt;
| v0.35 || [https://sourceforge.net/projects/boofcv/files/v0.35 Link] || Even better Chessboard, stereo, various&lt;br /&gt;
|-&lt;br /&gt;
| v0.34 || [https://sourceforge.net/projects/boofcv/files/v0.34 Link] || More Concurrency, Chessboard, Lines&lt;br /&gt;
|-&lt;br /&gt;
| v0.33 || [https://sourceforge.net/projects/boofcv/files/v0.33.1 Link] || Concurrency, SFM, QR Fixes&lt;br /&gt;
|-&lt;br /&gt;
| v0.32 || [https://sourceforge.net/projects/boofcv/files/v0.32 Link] || Uncalibrated Stereo&lt;br /&gt;
|-&lt;br /&gt;
| v0.31 || [https://sourceforge.net/projects/boofcv/files/v0.31 Link] || Sparse Bundle Adjustment&lt;br /&gt;
|-&lt;br /&gt;
| v0.30 || [https://sourceforge.net/projects/boofcv/files/v0.30 Link] || Android and SFM&lt;br /&gt;
|-&lt;br /&gt;
| v0.29 || [https://sourceforge.net/projects/boofcv/files/v0.29 Link] || BOverride, Background GMM, GVersion&lt;br /&gt;
|-&lt;br /&gt;
| v0.28 || [https://sourceforge.net/projects/boofcv/files/v0.28 Link] || Fisheye calibration, Hex target, QR Code, polyline&lt;br /&gt;
|-&lt;br /&gt;
| v0.27 || [https://sourceforge.net/projects/boofcv/files/v0.27 Link] || Module name changes, new calib target, new distortion&lt;br /&gt;
|-&lt;br /&gt;
| v0.26 || [https://sourceforge.net/projects/boofcv/files/v0.26 Link] || Critical bug fixes, more examples, improved asymmetric grid&lt;br /&gt;
|-&lt;br /&gt;
| v0.25 || [https://sourceforge.net/projects/boofcv/files/v0.25 Link] || 360 and fisheye support, Deep Learning, circle asym grid, ... etc&lt;br /&gt;
|-&lt;br /&gt;
| v0.24.1 || [https://sourceforge.net/projects/boofcv/files/v0.24.1 Link] || Fixed dependency on a SNAPSHOT &lt;br /&gt;
|-&lt;br /&gt;
| v0.24 || [https://sourceforge.net/projects/boofcv/files/v0.24 Link] || Replaced Xuggler with JavaCV&lt;br /&gt;
|-&lt;br /&gt;
| v0.23 || [https://sourceforge.net/projects/boofcv/files/v0.23 Link] || Refactoring of image names&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Main_Page&amp;diff=3267</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Main_Page&amp;diff=3267"/>
		<updated>2023-07-15T22:27:08Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&lt;br /&gt;
[[File:Boofcv_logo_circles_frontpage.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
BoofCV is an open source library written from scratch for real-time computer vision. Its functionality covers a range of subjects, low-level image processing, camera calibration, feature detection/tracking, structure-from-motion, fiducial detection, and recognition. BoofCV has been released under an Apache  2.0 license for both academic and commercial use.&lt;br /&gt;
&lt;br /&gt;
BoofCV is organized into several packages: &amp;#039;&amp;#039;image processing&amp;#039;&amp;#039;, &amp;#039;&amp;#039;features&amp;#039;&amp;#039;, &amp;#039;&amp;#039;geometric vision&amp;#039;&amp;#039;, &amp;#039;&amp;#039;calibration&amp;#039;&amp;#039;, &amp;#039;&amp;#039;recognition&amp;#039;&amp;#039;,&amp;#039;&amp;#039;visualize&amp;#039;&amp;#039;, and &amp;#039;&amp;#039;IO&amp;#039;&amp;#039;.  &amp;#039;&amp;#039;Image processing&amp;#039;&amp;#039; contains commonly used image processing functions which operate directly on pixels.  &amp;#039;&amp;#039;Features&amp;#039;&amp;#039; contains feature extraction algorithms for use in higher level operations.  &amp;#039;&amp;#039;Calibration&amp;#039;&amp;#039; has routines for determining the camera&amp;#039;s intrinsic and extrinsic parameters.  &amp;#039;&amp;#039;Recognition&amp;#039;&amp;#039; is for recognition and tracking complex visual objects.  &amp;#039;&amp;#039;Geometric vision&amp;#039;&amp;#039; is composed of routines for processing extracted image features using 2D and 3D geometry. &amp;#039;&amp;#039;Visualize&amp;#039;&amp;#039; has routines for rendering and displaying extracted features.  &amp;#039;&amp;#039;IO&amp;#039;&amp;#039; has input and output routines for different data structures.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| &lt;br /&gt;
|-&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/wgPzlokxbXw|300|center}}&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/O_yAdsT8d84|300|center}}&lt;br /&gt;
|-&lt;br /&gt;
! New calibration tools in v0.39&lt;br /&gt;
! Three View Self Calibration&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://www.ninox360.com/calibration-targets 2022-Nov: Create calibration targets in your browser]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://www.ninox360.com/barcode-scanner 2022-Nov: Barcode scanner webapp]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://medium.com/p/35b431fcccf1 2022-Jan: Article on scanning Micro QR Codes]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[[Tutorial_Camera_Calibration|2021-Oct: Camera Calibration Tutorial has been re-written.]]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://youtu.be/RCL5tSt189M 2021-Mar: Stereo Cloud from Mars Perseverance Rover]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:Loose-lips.jpg|125px|link=https://groups.google.com/group/boofcv]] ||&lt;br /&gt;
{| width=&amp;quot;400pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Current Release: &amp;#039;&amp;#039;v0.44&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Date: &amp;#039;&amp;#039;July 15, 2023&amp;#039;&amp;#039; &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://github.com/lessthanoptimal/BoofCV/blob/v0.44/change.txt Change Log]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://youtu.be/BbTPQ9mIoQU Video Summary v0.38]&lt;br /&gt;
|}&lt;br /&gt;
| [[File:Boofcv_bug_propaganda_poster_small.jpg|125px|link=https://github.com/lessthanoptimal/BoofCV/issues]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| width=&amp;quot;600pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; |  [[File:Ninox360_icon_logo_moto.png|400px|link=https://www.ninox360.com]]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | A start up from the creators of BoofCV.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-help-icon.png|100px|link=[[Manual]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Manual]]&lt;br /&gt;
|-&lt;br /&gt;
| [[FAQ | FAQ]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.boofcv.org/javadoc/ JavaDoc]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCV/issues Report Bug]&lt;br /&gt;
|-&lt;br /&gt;
| [https://groups.google.com/group/boofcv Message Board]&lt;br /&gt;
|-&lt;br /&gt;
| [[Papers and Reports| Papers/Reports]]&lt;br /&gt;
|} &lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-binary-icon.png|100px|link=[https://github.com/lessthanoptimal/BoofCV Source Code]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Download|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.youtube.com/user/BoofCV/videos Videos]&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Bounties| Bounties ]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Contributing|Contribute]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCPP BoofCPP]&lt;br /&gt;
|} &lt;br /&gt;
| width&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-graph-icon.png|100px|link=[[Performance:BoofCV]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Performance:BoofCV|Performance]]&lt;br /&gt;
|-&lt;br /&gt;
| [[BoofCV Roadmap | Road Map]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Validation:Algorithms | Validation]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Projects_Using_BoofCV | Users ]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Acknowledgements|Acknowledgements]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;SPAN STYLE=&amp;quot;font-size: 14pt;text-align:center&amp;quot;&amp;gt;Prebuild Stand Alone Applications&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Examples_and_Demonstrations|Examples / Demonstrations]] || Example and demonstration applications&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create QR Code|QR Code Generator]] || Create and print QR Codes&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Square_Binary|Square Fiducials]] || Binary/Image Square Fiducial Generator &lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Calibration_Fiducials|Calibration Targets]] || Calibration Target Generator&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Camera_Calibration|Calibration]] || Camera Calibration Application&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Undistort|Lens Undistortion]] ||  Batch Removal of Lens Distortion&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Downsize|Image Downsize]] ||  Batch Image Down Sampling with minimal aliasing&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
| colspan=5 style=&amp;quot;background-color:#ffffdd;&amp;quot; align=&amp;quot;center&amp;quot; |&lt;br /&gt;
== Capability Summary ==&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Image Processing &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Feature &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Recognition&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Geometric &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Integration&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Image Convolution || [[Example_Convolution|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Image Derivatives || [[Example_Image_Derivative|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Thresholding || [[Example_Thresholding|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Ops || [[Example_Binary_Image|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Space || [[Example_Color_Space|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interpolation || [[Example_Interpolation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Deformation || [[Example_Key_Point_Based_Deformation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Blur || [[Example_Image_Blur|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Enhancement || [[Example_Image_Enhancement|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Noise Removal || [[Example_Wavelet_Noise_Removal|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fourier Transform || [[Example_Discrete_Fourier_Transform|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Wavelet Decomposition || &lt;br /&gt;
|- &lt;br /&gt;
| Discrete Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Float Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Scale Space Image || &lt;br /&gt;
|-&lt;br /&gt;
| Equirectangular || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye Cameras || [[Example_Fisheye_To_Pinhole|Example]]&lt;br /&gt;
|&lt;br /&gt;
|} &lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Black Polygons || [[Example_Detect_Black_Polygons|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Black Ellipses || [[Example_Detect_Black_Ellipses|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interest Points || [[Example_Detect_Interest_Points|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Line Detection || [[Example_Detect_Lines|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Motion Detection || [[Example_Background_Moving_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Contours || [[Example_Binary_Image|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Polygon Fitting || [[Example_Fit_Polygon|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Ellipse Fitting || [[Example_Fit_Ellipse|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Template Matching || [[Example_Template_Matching|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Interest Points || [[Example_Detect_Describe_Interface|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Dense Features || [[Example_Dense_Image_Features|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Point Tracking || [[Example_Track_Point_Features|Example]]&lt;br /&gt;
|-  &lt;br /&gt;
| Non-max Suppression || [[Example_Non_Maximum_Suppression|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Dense Optical Flow || [[Example_Dense_Optical_Flow|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Superpixels || [[Example_Superpixels|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Color Segmentation || [[Example_Color_Segmentation|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Scene Recognition || [[Example_Scene_Recognition|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Image Lookup || [[Example_Color_Histogram_Lookup|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| KNN Classifier || [[Example_Scene_Classification|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| CNN Classifiers || [[Example_Image_Classification|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Object Tracking || [[Example_Tracker_Object|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fiducials || [[Tutorial_Fiducials|Tutorial]]&lt;br /&gt;
|-&lt;br /&gt;
| QR Codes || [[Tutorial_QRCodes|Tutorial]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| SFM || [[Tutorial_Geometric_Vision|Tutorial]] &lt;br /&gt;
|- &lt;br /&gt;
| Camera Calibration || [[Tutorial_Camera_Calibration|Tutorial]]&lt;br /&gt;
|- &lt;br /&gt;
| Mono Calibration || [[Example_Calibrate_Planar_Mono|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Fisheye Calibration || [[Example_Calibrate_Planar_Fisheye|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Stereo Calibration || [[Example_Calibrate_Planar_Stereo|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Remove Distortion || [[Example_Remove_Lens_Distortion|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Equi to Pinhole || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye to Equi|| [[Example_Fisheye_To_Equirectangular|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Bundle Adjustment || [[Example Sparse Bundle Adjustment|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| 3D Stereo Cloud || [[Example_Stereo_Disparity_3D|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Monocular Stereo || [[Example_Stereo_Single_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Uncalibrated Stereo || [[Example_Three_View_Stereo_Uncalibrated|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Multi Baseline Stereo || [[Example_Multi_Baseline_Stereo|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Scene Reconstruction || [[Example_Multiview_Reconstruction_Dense|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Video Stabilization || [[Example_Video_Stabilization|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Video Mosaic || [[Example_Video_Mosaic|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Stereo || [[Example_Stereo_Visual_Odometry|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Mono Plane || [[Example_Visual_Odometry_Monocular_Plane|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: RGB-D || [[Example_Visual_Odometry_Depth|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
| Visualization&lt;br /&gt;
|-&lt;br /&gt;
| [[Android_support|Android]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Videos and Webcams|Video]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Kinect|Kinect]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Processing|Processing]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/PyBoof Python]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Main_Page&amp;diff=3266</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Main_Page&amp;diff=3266"/>
		<updated>2023-07-15T22:26:39Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&lt;br /&gt;
[[File:Boofcv_logo_circles_frontpage.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
BoofCV is an open source library written from scratch for real-time computer vision. Its functionality covers a range of subjects, low-level image processing, camera calibration, feature detection/tracking, structure-from-motion, fiducial detection, and recognition. BoofCV has been released under an Apache  2.0 license for both academic and commercial use.&lt;br /&gt;
&lt;br /&gt;
BoofCV is organized into several packages: &amp;#039;&amp;#039;image processing&amp;#039;&amp;#039;, &amp;#039;&amp;#039;features&amp;#039;&amp;#039;, &amp;#039;&amp;#039;geometric vision&amp;#039;&amp;#039;, &amp;#039;&amp;#039;calibration&amp;#039;&amp;#039;, &amp;#039;&amp;#039;recognition&amp;#039;&amp;#039;,&amp;#039;&amp;#039;visualize&amp;#039;&amp;#039;, and &amp;#039;&amp;#039;IO&amp;#039;&amp;#039;.  &amp;#039;&amp;#039;Image processing&amp;#039;&amp;#039; contains commonly used image processing functions which operate directly on pixels.  &amp;#039;&amp;#039;Features&amp;#039;&amp;#039; contains feature extraction algorithms for use in higher level operations.  &amp;#039;&amp;#039;Calibration&amp;#039;&amp;#039; has routines for determining the camera&amp;#039;s intrinsic and extrinsic parameters.  &amp;#039;&amp;#039;Recognition&amp;#039;&amp;#039; is for recognition and tracking complex visual objects.  &amp;#039;&amp;#039;Geometric vision&amp;#039;&amp;#039; is composed of routines for processing extracted image features using 2D and 3D geometry. &amp;#039;&amp;#039;Visualize&amp;#039;&amp;#039; has routines for rendering and displaying extracted features.  &amp;#039;&amp;#039;IO&amp;#039;&amp;#039; has input and output routines for different data structures.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| &lt;br /&gt;
|-&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/wgPzlokxbXw|300|center}}&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/O_yAdsT8d84|300|center}}&lt;br /&gt;
|-&lt;br /&gt;
! New calibration tools in v0.39&lt;br /&gt;
! Three View Self Calibration&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://www.ninox360.com/calibration-targets 2022-Nov: Create calibration targets in your browser]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://www.ninox360.com/barcode-scanner 2022-Nov: Barcode scanner webapp]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://medium.com/p/35b431fcccf1 2022-Jan: Article on scanning Micro QR Codes]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[[Tutorial_Camera_Calibration|2021-Oct: Camera Calibration Tutorial has been re-written.]]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://youtu.be/RCL5tSt189M 2021-Mar: Stereo Cloud from Mars Perseverance Rover]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:Loose-lips.jpg|125px|link=https://groups.google.com/group/boofcv]] ||&lt;br /&gt;
{| width=&amp;quot;400pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Current Release: &amp;#039;&amp;#039;v0.44&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Date: &amp;#039;&amp;#039;July 15, 2023&amp;#039;&amp;#039; &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://github.com/lessthanoptimal/BoofCV/blob/v0.44change.txt Change Log]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://youtu.be/BbTPQ9mIoQU Video Summary v0.38]&lt;br /&gt;
|}&lt;br /&gt;
| [[File:Boofcv_bug_propaganda_poster_small.jpg|125px|link=https://github.com/lessthanoptimal/BoofCV/issues]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| width=&amp;quot;600pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; |  [[File:Ninox360_icon_logo_moto.png|400px|link=https://www.ninox360.com]]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | A start up from the creators of BoofCV.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-help-icon.png|100px|link=[[Manual]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Manual]]&lt;br /&gt;
|-&lt;br /&gt;
| [[FAQ | FAQ]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.boofcv.org/javadoc/ JavaDoc]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCV/issues Report Bug]&lt;br /&gt;
|-&lt;br /&gt;
| [https://groups.google.com/group/boofcv Message Board]&lt;br /&gt;
|-&lt;br /&gt;
| [[Papers and Reports| Papers/Reports]]&lt;br /&gt;
|} &lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-binary-icon.png|100px|link=[https://github.com/lessthanoptimal/BoofCV Source Code]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Download|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.youtube.com/user/BoofCV/videos Videos]&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Bounties| Bounties ]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Contributing|Contribute]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCPP BoofCPP]&lt;br /&gt;
|} &lt;br /&gt;
| width&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-graph-icon.png|100px|link=[[Performance:BoofCV]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Performance:BoofCV|Performance]]&lt;br /&gt;
|-&lt;br /&gt;
| [[BoofCV Roadmap | Road Map]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Validation:Algorithms | Validation]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Projects_Using_BoofCV | Users ]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Acknowledgements|Acknowledgements]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;SPAN STYLE=&amp;quot;font-size: 14pt;text-align:center&amp;quot;&amp;gt;Prebuild Stand Alone Applications&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Examples_and_Demonstrations|Examples / Demonstrations]] || Example and demonstration applications&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create QR Code|QR Code Generator]] || Create and print QR Codes&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Square_Binary|Square Fiducials]] || Binary/Image Square Fiducial Generator &lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Calibration_Fiducials|Calibration Targets]] || Calibration Target Generator&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Camera_Calibration|Calibration]] || Camera Calibration Application&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Undistort|Lens Undistortion]] ||  Batch Removal of Lens Distortion&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Downsize|Image Downsize]] ||  Batch Image Down Sampling with minimal aliasing&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
| colspan=5 style=&amp;quot;background-color:#ffffdd;&amp;quot; align=&amp;quot;center&amp;quot; |&lt;br /&gt;
== Capability Summary ==&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Image Processing &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Feature &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Recognition&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Geometric &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Integration&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Image Convolution || [[Example_Convolution|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Image Derivatives || [[Example_Image_Derivative|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Thresholding || [[Example_Thresholding|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Ops || [[Example_Binary_Image|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Space || [[Example_Color_Space|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interpolation || [[Example_Interpolation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Deformation || [[Example_Key_Point_Based_Deformation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Blur || [[Example_Image_Blur|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Enhancement || [[Example_Image_Enhancement|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Noise Removal || [[Example_Wavelet_Noise_Removal|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fourier Transform || [[Example_Discrete_Fourier_Transform|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Wavelet Decomposition || &lt;br /&gt;
|- &lt;br /&gt;
| Discrete Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Float Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Scale Space Image || &lt;br /&gt;
|-&lt;br /&gt;
| Equirectangular || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye Cameras || [[Example_Fisheye_To_Pinhole|Example]]&lt;br /&gt;
|&lt;br /&gt;
|} &lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Black Polygons || [[Example_Detect_Black_Polygons|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Black Ellipses || [[Example_Detect_Black_Ellipses|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interest Points || [[Example_Detect_Interest_Points|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Line Detection || [[Example_Detect_Lines|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Motion Detection || [[Example_Background_Moving_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Contours || [[Example_Binary_Image|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Polygon Fitting || [[Example_Fit_Polygon|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Ellipse Fitting || [[Example_Fit_Ellipse|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Template Matching || [[Example_Template_Matching|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Interest Points || [[Example_Detect_Describe_Interface|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Dense Features || [[Example_Dense_Image_Features|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Point Tracking || [[Example_Track_Point_Features|Example]]&lt;br /&gt;
|-  &lt;br /&gt;
| Non-max Suppression || [[Example_Non_Maximum_Suppression|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Dense Optical Flow || [[Example_Dense_Optical_Flow|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Superpixels || [[Example_Superpixels|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Color Segmentation || [[Example_Color_Segmentation|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Scene Recognition || [[Example_Scene_Recognition|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Image Lookup || [[Example_Color_Histogram_Lookup|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| KNN Classifier || [[Example_Scene_Classification|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| CNN Classifiers || [[Example_Image_Classification|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Object Tracking || [[Example_Tracker_Object|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fiducials || [[Tutorial_Fiducials|Tutorial]]&lt;br /&gt;
|-&lt;br /&gt;
| QR Codes || [[Tutorial_QRCodes|Tutorial]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| SFM || [[Tutorial_Geometric_Vision|Tutorial]] &lt;br /&gt;
|- &lt;br /&gt;
| Camera Calibration || [[Tutorial_Camera_Calibration|Tutorial]]&lt;br /&gt;
|- &lt;br /&gt;
| Mono Calibration || [[Example_Calibrate_Planar_Mono|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Fisheye Calibration || [[Example_Calibrate_Planar_Fisheye|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Stereo Calibration || [[Example_Calibrate_Planar_Stereo|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Remove Distortion || [[Example_Remove_Lens_Distortion|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Equi to Pinhole || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye to Equi|| [[Example_Fisheye_To_Equirectangular|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Bundle Adjustment || [[Example Sparse Bundle Adjustment|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| 3D Stereo Cloud || [[Example_Stereo_Disparity_3D|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Monocular Stereo || [[Example_Stereo_Single_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Uncalibrated Stereo || [[Example_Three_View_Stereo_Uncalibrated|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Multi Baseline Stereo || [[Example_Multi_Baseline_Stereo|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Scene Reconstruction || [[Example_Multiview_Reconstruction_Dense|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Video Stabilization || [[Example_Video_Stabilization|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Video Mosaic || [[Example_Video_Mosaic|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Stereo || [[Example_Stereo_Visual_Odometry|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Mono Plane || [[Example_Visual_Odometry_Monocular_Plane|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: RGB-D || [[Example_Visual_Odometry_Depth|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
| Visualization&lt;br /&gt;
|-&lt;br /&gt;
| [[Android_support|Android]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Videos and Webcams|Video]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Kinect|Kinect]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Processing|Processing]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/PyBoof Python]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Example_Android_Gradient&amp;diff=3265</id>
		<title>Example Android Gradient</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Example_Android_Gradient&amp;diff=3265"/>
		<updated>2023-07-15T22:23:48Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;gallery heights=300 widths=550 &amp;gt;&lt;br /&gt;
Image:Example_android_video.jpg| Colorized image gradient being displayed on an Android phone.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;SPAN STYLE=&amp;quot;font-size: 20pt&amp;quot;&amp;gt;New projects should use [[Example_Android_Fragment_Gradient | Fragments]]&amp;lt;/SPAN&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Demonstration of how to capture and process a video stream in real-time using BoofCV on an Android device.  On Android devices, video streams are accessed inside a camera preview, which require several hoops to be jumped through.  What this example does is capture the image in NV21 format, convert it into an GrayU8, compute the image gradient, visualize the gradient in a Bitmap image, and display the results.  Note that the example below is not entirely self contained, see the complete project for additional files.&lt;br /&gt;
&lt;br /&gt;
Example File: [https://github.com/lessthanoptimal/BoofCV/blob/v0.31/integration/boofcv-android/examples/video/app/src/main/java/org/boofcv/video/GradientActivity.java GradientActivity.java]&lt;br /&gt;
&lt;br /&gt;
Complete Project: [https://github.com/lessthanoptimal/BoofCV/blob/v0.31/integration/boofcv-android/examples/video/ Android Project]&lt;br /&gt;
&lt;br /&gt;
Concepts:&lt;br /&gt;
* Android&lt;br /&gt;
* Camera Preview&lt;br /&gt;
* Image Gradient&lt;br /&gt;
&lt;br /&gt;
Related Tutorial:&lt;br /&gt;
* [[Android_support| Android Support]]&lt;br /&gt;
&lt;br /&gt;
Related Examples:&lt;br /&gt;
* [[Example_Image_Filter| Image Filter]]&lt;br /&gt;
&lt;br /&gt;
= Example Code =&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Demonstrates how to use the visualize activity. A video stream is opened and the image gradient&lt;br /&gt;
 * is found. The gradient is then rendered into a format which can be visualized and displayed&lt;br /&gt;
 * on the Android device&amp;#039;s screen.&lt;br /&gt;
 *&lt;br /&gt;
 * This greatly simplifies the process of capturing and visualizing image data from a camera.&lt;br /&gt;
 * Internally it uses the camera 2 API. You can customize its behavior by overriding&lt;br /&gt;
 * different internal functions. For more details, see the JavaDoc of it&amp;#039;s parent classes.&lt;br /&gt;
 *&lt;br /&gt;
 * @see VisualizeCamera2Activity&lt;br /&gt;
 * @see boofcv.android.camera2.SimpleCamera2Activity&lt;br /&gt;
 *&lt;br /&gt;
 * @author Peter Abeles&lt;br /&gt;
 */&lt;br /&gt;
public class GradientActivity extends VisualizeCamera2Activity&lt;br /&gt;
{&lt;br /&gt;
	// Storage for the gradient&lt;br /&gt;
	private GrayS16 derivX = new GrayS16(1,1);&lt;br /&gt;
	private GrayS16 derivY = new GrayS16(1,1);&lt;br /&gt;
&lt;br /&gt;
	// Storage for image gradient. In general you will want to precompute data structures due&lt;br /&gt;
	// to the expense of garbage collection&lt;br /&gt;
	private ImageGradient&amp;lt;GrayU8,GrayS16&amp;gt; gradient = FactoryDerivative.three(GrayU8.class, GrayS16.class);&lt;br /&gt;
&lt;br /&gt;
	// Used to display text info on the display&lt;br /&gt;
	private Paint paintText = new Paint();&lt;br /&gt;
&lt;br /&gt;
	public GradientActivity() {&lt;br /&gt;
		// The default behavior for selecting the camera&amp;#039;s resolution is to&lt;br /&gt;
		// find the resolution which comes the closest to having this many&lt;br /&gt;
		// pixels.&lt;br /&gt;
		targetResolution = 640*480;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	protected void onCreate(Bundle savedInstanceState) {&lt;br /&gt;
		super.onCreate(savedInstanceState);&lt;br /&gt;
&lt;br /&gt;
		setContentView(R.layout.gradient);&lt;br /&gt;
		FrameLayout surface = findViewById(R.id.camera_frame);&lt;br /&gt;
&lt;br /&gt;
		// By calling this function you are telling the camera library that you wish to process&lt;br /&gt;
		// images in a gray scale format. The video stream is typically in YUV420. Color&lt;br /&gt;
		// image formats are supported as RGB, YUV, ... etc, color spaces.&lt;br /&gt;
		setImageType(ImageType.single(GrayU8.class));&lt;br /&gt;
&lt;br /&gt;
		// Configure paint used to display FPS&lt;br /&gt;
		paintText.setStrokeWidth(4*displayMetrics.density);&lt;br /&gt;
		paintText.setTextSize(14*displayMetrics.density);&lt;br /&gt;
		paintText.setTextAlign(Paint.Align.LEFT);&lt;br /&gt;
		paintText.setARGB(0xFF,0xFF,0xB0,0);&lt;br /&gt;
		paintText.setTypeface(Typeface.create(Typeface.MONOSPACE, Typeface.BOLD));&lt;br /&gt;
&lt;br /&gt;
		// The camera stream will now start after this function is called.&lt;br /&gt;
		startCamera(surface,null);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * This is where you specify custom camera settings. See {@link boofcv.android.camera2.SimpleCamera2Activity}&amp;#039;s&lt;br /&gt;
	 * JavaDoc for more funcitons which you can override.&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param captureRequestBuilder Used to configure the camera.&lt;br /&gt;
	 */&lt;br /&gt;
	@Override&lt;br /&gt;
	protected void configureCamera(CameraDevice device, CameraCharacteristics characteristics, CaptureRequest.Builder captureRequestBuilder) {&lt;br /&gt;
		captureRequestBuilder.set(CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_VIDEO);&lt;br /&gt;
		captureRequestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * During camera initialization this function is called once after the resolution is known.&lt;br /&gt;
	 * This is a good function to override and predeclare data structres which are dependent&lt;br /&gt;
	 * on the video feeds resolution.&lt;br /&gt;
	 */&lt;br /&gt;
	@Override&lt;br /&gt;
	protected void onCameraResolutionChange( int width , int height, int sensorOrientation ) {&lt;br /&gt;
		super.onCameraResolutionChange(width, height,sensorOrientation);&lt;br /&gt;
&lt;br /&gt;
		derivX.reshape(width, height);&lt;br /&gt;
		derivY.reshape(width, height);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * This function is invoked in its own thread and can take as long as you want.&lt;br /&gt;
	 */&lt;br /&gt;
	@Override&lt;br /&gt;
	protected void processImage(ImageBase image) {&lt;br /&gt;
		// The data type of &amp;#039;image&amp;#039; was specified in onCreate() function&lt;br /&gt;
		// The line below will compute the gradient and store it in two images. One for the&lt;br /&gt;
		// gradient along the x-axis and the other along the y-axis&lt;br /&gt;
		gradient.process((GrayU8)image,derivX,derivY);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Override the default behavior and colorize gradient instead of converting input image.&lt;br /&gt;
	 */&lt;br /&gt;
	@Override&lt;br /&gt;
	protected void renderBitmapImage(BitmapMode mode, ImageBase image) {&lt;br /&gt;
		switch( mode ) {&lt;br /&gt;
			case UNSAFE: { // this application is configured to use double buffer and could ignore all other modes&lt;br /&gt;
				VisualizeImageData.colorizeGradient(derivX, derivY, -1, bitmap, bitmapTmp);&lt;br /&gt;
			} break;&lt;br /&gt;
&lt;br /&gt;
			case DOUBLE_BUFFER: {&lt;br /&gt;
				VisualizeImageData.colorizeGradient(derivX, derivY, -1, bitmapWork, bitmapTmp);&lt;br /&gt;
&lt;br /&gt;
				if( bitmapLock.tryLock() ) {&lt;br /&gt;
					try {&lt;br /&gt;
						Bitmap tmp = bitmapWork;&lt;br /&gt;
						bitmapWork = bitmap;&lt;br /&gt;
						bitmap = tmp;&lt;br /&gt;
					} finally {&lt;br /&gt;
						bitmapLock.unlock();&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			} break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Demonstrates how to draw visuals&lt;br /&gt;
	 */&lt;br /&gt;
	@Override&lt;br /&gt;
	protected void onDrawFrame(SurfaceView view, Canvas canvas) {&lt;br /&gt;
		super.onDrawFrame(view, canvas);&lt;br /&gt;
&lt;br /&gt;
		// Display info on the image being process and how fast input camera&lt;br /&gt;
		// stream (probably in YUV420) is converted into a BoofCV format&lt;br /&gt;
		int width = bitmap.getWidth();&lt;br /&gt;
		int height = bitmap.getHeight();&lt;br /&gt;
		canvas.drawText(String.format(Locale.getDefault(),&lt;br /&gt;
				&amp;quot;%d x %d Convert: %4.1f (ms)&amp;quot;,&lt;br /&gt;
				width,height,periodConvert.getAverage()),&lt;br /&gt;
				0,120,paintText);&lt;br /&gt;
&lt;br /&gt;
		// Pro tip: Run in app fast or release mode for a dramatic speed up!&lt;br /&gt;
		// In Android Studio expand &amp;quot;Build Variants&amp;quot; tab on left.&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Manual&amp;diff=3264</id>
		<title>Manual</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Manual&amp;diff=3264"/>
		<updated>2023-07-15T22:17:27Z</updated>

		<summary type="html">&lt;p&gt;Peter: /* Example Code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to BoofCV!  BoofCV is an open source Java computer vision library intended for developers.  The following manual provides an introduction to development with BoofCV.  It is assumed that the reader is familiar with development in the Java programming language and the basics of computer vision. This manual primarily takes the form of example code and tutorials.&lt;br /&gt;
&lt;br /&gt;
= Getting Started =&lt;br /&gt;
&lt;br /&gt;
Before you can do anything with BoofCV you will need to download it.  The [[Download:BoofCV|download]] page provides instructions on how to download pre-compiled jars, source code, add a Maven dependency, and checkout the latest source code. After you obtain the jar files browse through the examples below to get ideas on how you can use BoofCV.&lt;br /&gt;
&lt;br /&gt;
* [https://youtu.be/qcJ6iBBEnKo Video tutorial on creating a new Desktop project]&lt;br /&gt;
&lt;br /&gt;
== Pre-Build Applications ==&lt;br /&gt;
&lt;br /&gt;
Want to try out BoofCV without needing to build it? [[Applications|Check out the available applications!]]&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
To use BoofCV in your project you do NOT need to build it. The best way to add BoofCV to you project is by using the jars uploaded to Maven Central and referencing them in your Gradle or Maven project. See [[Download]] for more instructions on adding BoofCV to your project. &lt;br /&gt;
&lt;br /&gt;
Building BoofCV is very easy. The only bit that&amp;#039;s tricky is knowing that you need to first run the auto code generator as is shown below. Note that it can take a minute or two the first time you build to download all the dependencies.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd boofcv&lt;br /&gt;
git clean -fd main&lt;br /&gt;
./gradlew autogenerate&lt;br /&gt;
./gradlew publishToMavenLocal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The latest build script should even download the latest JDK for you. If there are any issues please post a question to the [https://groups.google.com/group/boofcv?pli=1 message board]. If you are building from an IDE such as IntelliJ or Eclipse you will probably need to point it towards the correct JDK manually. The [https://github.com/lessthanoptimal/BoofCV/blob/SNAPSHOT/README.md readme.md] will have the latest info on JDK compatibility, but Java 15 is what it needs to be built with.&lt;br /&gt;
&lt;br /&gt;
== Support ==&lt;br /&gt;
&lt;br /&gt;
Support is provided in the form of the documentation on this website and through its message board.  See the left navigation board for a link to the message board.  Please read through the documentation and FAQ (see below) first before posting a question there.  You are much more likely to get a good response if you demonstrate due diligence.&lt;br /&gt;
&lt;br /&gt;
http://boofcv.org/index.php?title=FAQ&lt;br /&gt;
&lt;br /&gt;
If you find any mistakes in the documentation or library itself please submit a bug report or post a message about it!  If you don&amp;#039;t let us know about it we can&amp;#039;t fix it.&lt;br /&gt;
&lt;br /&gt;
== Propaganda ==&lt;br /&gt;
&lt;br /&gt;
Did you find BoofCV useful and use it on your project/work/research/thesis?  Well let others know about it through your blog, twitter, or status message!  Academics, please cite BoofCV in your papers and checkout the papers page to see if the specific algorithm you are using is mentioned there.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt; [[Papers and Reports|BoofCV Papers and Tech Report]] &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Examples and Tutorial =&lt;br /&gt;
&lt;br /&gt;
A few tutorials and examples are provided to provide the basic concepts of development with BoofCV.  Data files used in these examples are stored in a separate GIT repository from the main code.  See [https://github.com/lessthanoptimal/BoofCV/blob/master/examples/readme.txt boofcv/examples/readme.txt] or https://github.com/lessthanoptimal/BoofCV-Data&lt;br /&gt;
&lt;br /&gt;
Want to quickly explore all the examples and run all the demonstrations?  Checkout the source code and run the following applications:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd boofcv&lt;br /&gt;
./gradlew examples&lt;br /&gt;
java -jar examples/examples.jar&lt;br /&gt;
./gradlew demonstrations&lt;br /&gt;
java -jar demonstrations/demonstrations.jar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://youtu.be/qMTtdiujAtQ?t=107 YouTube Video] showing the above applications being built and run.&lt;br /&gt;
&lt;br /&gt;
Alternatively you can just download a pre-compiled application and explore these examples that way. See [[Applications]].&lt;br /&gt;
&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Topics&lt;br /&gt;
! Languages&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
# [[Tutorial Quick Start|Quick Start]]&lt;br /&gt;
# [[Tutorial Images|Images in BoofCV]]&lt;br /&gt;
# [[Tutorial_Image_Segmentation| Image Segmentation]]&lt;br /&gt;
# [[Tutorial_Fiducials|Fiducials]]&lt;br /&gt;
# [[Tutorial_QRCodes|QR Codes]]&lt;br /&gt;
# [[Tutorial Videos and Webcams|Videos and Webcams]]&lt;br /&gt;
# [[Tutorial_Camera_Calibration| Camera Calibration ]]&lt;br /&gt;
# [[Tutorial Geometric Vision| 3D Computer Vision / Structure from Motion]]&lt;br /&gt;
# [[3D_Reconstruction_on_Desktop_Tutorial|Photogrammetry / 3D Reconstruction]]&lt;br /&gt;
# [[Tutorial Kinect| Kinect RGB-D Sensor]]&lt;br /&gt;
# [[Concurrency | Concurrency / Multi Threading]]&lt;br /&gt;
# [[Visualization| Visualization]]&lt;br /&gt;
|&lt;br /&gt;
# [[Kotlin | Kotlin]]&lt;br /&gt;
# [https://github.com/lessthanoptimal/PyBoof PyBoof (Python)]&lt;br /&gt;
# [[Tutorial_Processing | Processing]]&lt;br /&gt;
|-&lt;br /&gt;
! Devices&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
# [[Android_support|Android Support]]&lt;br /&gt;
# [[Raspberry_PI | Raspberry PI]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Example Code ==&lt;br /&gt;
List of simple examples which demonstrate a single capability of BoofCV.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
* Image Processing&lt;br /&gt;
*# [[Example Binary Image|Binary Images]]&lt;br /&gt;
*# [[Example Color Space| Color Space]]&lt;br /&gt;
*# [[Example Convolution|Convolution]]&lt;br /&gt;
*# [[Example Discrete Fourier Transform| Discrete Fourier Transform]]&lt;br /&gt;
*# [[Example Image Blur|Image Blur]]&lt;br /&gt;
*# [[Example Image Convert|Converting Images]]&lt;br /&gt;
*# [[Example_Image_Derivative|Image Derivative]]&lt;br /&gt;
*# [[Example Image Filter|Image Filters]]&lt;br /&gt;
*# [[Example_Interpolation|Interpolation]]&lt;br /&gt;
*# [[Example_Morphological_Thinning|Morphological Thinning]]&lt;br /&gt;
*# [[Example Planar Image|Using Planar Images]]&lt;br /&gt;
*# [[Example_Key_Point_Based_Deformation|Point Based Deformation]]&lt;br /&gt;
*# [[Example Image Pyramid| Image Pyramid]]&lt;br /&gt;
*# [[Example RGB to Gray| Rgb To Gray]]&lt;br /&gt;
*# [[Example Simulate Motion Blur| Simulate Motion Blur]]&lt;br /&gt;
*# [[Example Threads| Multi Threading]]&lt;br /&gt;
|&lt;br /&gt;
* Feature&lt;br /&gt;
*# [[Example Associate Interest Points| Associate Interest Points]]&lt;br /&gt;
*# [[Example_Associate_Three_View| Associate Three Views]]&lt;br /&gt;
*# [[Example Canny Edge| Canny Edge Detector]]&lt;br /&gt;
*# [[Example_Detect_Corners| Corner Features]]&lt;br /&gt;
*# [[Example Dense Image Features| Dense Image Features]]&lt;br /&gt;
*# [[Example Dense Optical Flow| Dense Optical Flow]]&lt;br /&gt;
*# [[Example_Detect_Black_Ellipses| Detecting Black Ellipses]]&lt;br /&gt;
*# [[Example_Detect_Black_Polygons| Detecting Black Polygons]]&lt;br /&gt;
*# [[Example_Detect_Describe_Interface| Detect Describe Interface]]&lt;br /&gt;
*# [[Example_Feature_Selector_Limit| Feature Selector Limit]]&lt;br /&gt;
*# [[Example SURF Feature| Computing SURF Features]]&lt;br /&gt;
*# [[Example_Fit_Ellipse| Fitting Ellipses]]&lt;br /&gt;
*# [[Example_Fit_Polygon| Fitting Polygons]]&lt;br /&gt;
*# [[Example Detect Interest Points| Detecting Interest Points]]&lt;br /&gt;
*# [[Example Detect Lines|Detecting Lines and Line Segments]]&lt;br /&gt;
*# [[Example Non Maximum Suppression|Non Maximum Suppression]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* Image Enhancement&lt;br /&gt;
*# [[Example Image Enhancement| Image Enhancement]]&lt;br /&gt;
*# [[Example Wavelet Noise Removal| Wavelet Noise Removal]]&lt;br /&gt;
|&lt;br /&gt;
* Segmentation&lt;br /&gt;
*# [[Example Color Segmentation| Color Segmentation]]&lt;br /&gt;
*# [[Example Superpixels| Superpixels]]&lt;br /&gt;
*# [[Example Thresholding|Thresholding]]&lt;br /&gt;
*# [[Example Watershed with Seeds| Watershed with Seeds]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* Stereo Vision&lt;br /&gt;
*# [[Example Rectification Calibrated| Rectify Calibrated Stereo]]&lt;br /&gt;
*# [[Example Stereo Disparity| Stereo Disparity Fully Calibrated]]&lt;br /&gt;
*# [[Example Stereo Disparity 3D| Disparity to 3D Cloud]]&lt;br /&gt;
*# [[Example Disparity Smoothing| Disparity Smoothing]]&lt;br /&gt;
*# [[Example_Stereo_Mesh| Disparity to Mesh]]&lt;br /&gt;
*# [[Example Stereo Single Camera| Stereo Calibrated Single Camera]]&lt;br /&gt;
*# [[Example Stereo Uncalibrated| Stereo Uncalibrated Single Camera]]&lt;br /&gt;
*# [[Example Three View Stereo Uncalibrated| Stereo Uncalibrated 3 Views]]&lt;br /&gt;
|&lt;br /&gt;
* Geometry&lt;br /&gt;
*# [[Example_Point_Cloud_Depth_Image| Point Cloud from Depth/RGB-D]]&lt;br /&gt;
*# [[Example Image Stitching| Image Stitching]] &lt;br /&gt;
*# [[Example Overhead View| Image to Overhead View]] &lt;br /&gt;
*# [[Example Remove Perspective Distortion| Remove Perspective Distortion]] &lt;br /&gt;
*# [[Example Video Mosaic| Video Mosaic]]&lt;br /&gt;
*# [[Example Video Stabilization| Video Stabilization]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* Structure from Motion&lt;br /&gt;
*# [[Example_Sparse_Bundle_Adjustment| Sparse Bundle Adjustment]]&lt;br /&gt;
*# [[Example_Bundle_Adjustment_Graph| Bundle Adjustment Graph]]&lt;br /&gt;
*# [[Example Fundamental Matrix| Computing Fundamental Matrix]]&lt;br /&gt;
*# [[ExampleComputeTrifocalTensor| Computing Trifocal Tensor]]&lt;br /&gt;
*# [[Example_PnP| Perspective-n-Point ]]&lt;br /&gt;
*# [[ExampleTrifocalTensorUses| Using Trifocal Tensor]]&lt;br /&gt;
*# [[Example_Visual_Odometry_Depth| Visual Odometry: Depth/RGB-D]]&lt;br /&gt;
*# [[Example_Visual_Odometry_Monocular_Plane| Visual Odometry: Monocular Plane]]&lt;br /&gt;
*# [[Example_Stereo_Visual_Odometry| Visual Odometry: Stereo]]&lt;br /&gt;
|&lt;br /&gt;
* Calibration&lt;br /&gt;
*# [[Example Calibrate Planar Fisheye| Calibrate Fisheye Camera]]&lt;br /&gt;
*# [[Example Calibrate Planar Mono| Calibrate Monocular Camera]]&lt;br /&gt;
*# [[Example_Calibrate_Planar_Multi| Calibrate Multi Cameras]] &lt;br /&gt;
*# [[Example Calibrate Planar Stereo| Calibrate Stereo Camera]]&lt;br /&gt;
*# [[Example Detect Calibration Target| Detecting Calibration Targets]]&lt;br /&gt;
*# [[Example Equirectangular To Pinhole| Equirectangular To Pinhole ]]&lt;br /&gt;
*# [[Example Fisheye To Equirectangular| Fisheye To Equirectangular ]]&lt;br /&gt;
*# [[Example Fisheye To Pinhole| Fisheye To Pinhole ]]&lt;br /&gt;
*# [[Example Remove Lens Distortion| Remove Lens Distortion]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* Tracking&lt;br /&gt;
*# [[Example_Background_Moving_Camera| Background Moving Camera]]&lt;br /&gt;
*# [[Example_Background_Stationary_Camera| Background Stationary Camera]]&lt;br /&gt;
*# [[Example Track Point Features| Track Point Features]]&lt;br /&gt;
*# [[Example Tracker Mean Shift| Mean Shift Likelihood Tracker]]&lt;br /&gt;
*# [[Example Tracker Object| Object Tracker]]&lt;br /&gt;
|&lt;br /&gt;
* Reconstruction&lt;br /&gt;
*# [[Example_Loop_Closure| Loop Closure]]&lt;br /&gt;
*# [[Example_Multi_Baseline_Stereo| Multi Baseline Stereo]]&lt;br /&gt;
*# [[Example_Multiview_Reconstruction_Dense| Multiview Dense Reconstruction]]&lt;br /&gt;
*# [[Example_Multiview_Uncalibrated_Reconstruction_Sparse| Uncalibrated Multiview Sparse]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* Fiducials&lt;br /&gt;
*# [[Example_Detect_Aztec_Code|Aztec Code Detector]]&lt;br /&gt;
*# [[Example_Detect_Micro_QR_Code|Micro QR Code Detector]]&lt;br /&gt;
*# [[Example_Detect_QR_Code|QR Code Detector]]&lt;br /&gt;
*# [[Example_Fiducial_Square_Binary| Square Binary]]&lt;br /&gt;
*# [[Example_Fiducial_Square_Hamming| Square Hamming]]&lt;br /&gt;
*# [[Example_Fiducial_Square_Image| Square Image]]&lt;br /&gt;
*# [[Example_Fiducial_Random_Dots| Random Dots]]&lt;br /&gt;
*# [[Example Calibration Target Pose| Calibration Target]] &lt;br /&gt;
*# [[Example_QR_Code_Binary_Data| QR Code with Binary Data]]&lt;br /&gt;
*# [[Example_Render_Aztec_Code|Aztec Code Rendering]]&lt;br /&gt;
*# [[Example_Render_Micro_QR_Code|Micro QR Code Rendering]]&lt;br /&gt;
*# [[Example_Render_QR_Code|QR Code Rendering]]&lt;br /&gt;
|&lt;br /&gt;
* Recognition&lt;br /&gt;
*# [[Example_Scene_Classification| KNN Classification]]&lt;br /&gt;
*# [[Example Color Histogram Lookup| Color Histogram Lookup]]&lt;br /&gt;
*# [[Example Image Classification| Image Classification]]&lt;br /&gt;
*# [[Example Scene Recognition| Scene Recognition]]&lt;br /&gt;
*# [[Example_Template_Matching| Template Matching]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* Point Clouds&lt;br /&gt;
*# [[Example Load and Save Point Clouds| Load and Save Clouds]]&lt;br /&gt;
*# [[Example View Point Cloud| View Point Cloud]]&lt;br /&gt;
|&lt;br /&gt;
* Integration&lt;br /&gt;
*# [[Example_Android_Video| Android Video (Old)]]&lt;br /&gt;
*# [[Example_Android_Fragment_Gradient | Android Fragment]]&lt;br /&gt;
*# [[Example Webcam Capture| Webcam Capture]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Example_Android_Fragment_Gradient&amp;diff=3263</id>
		<title>Example Android Fragment Gradient</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Example_Android_Fragment_Gradient&amp;diff=3263"/>
		<updated>2023-07-15T22:16:39Z</updated>

		<summary type="html">&lt;p&gt;Peter: Created page with &amp;quot;&amp;lt;center&amp;gt; &amp;lt;gallery heights=300 widths=550 &amp;gt; Image:Example_android_video.jpg| Colorized image gradient being displayed on an Android phone. &amp;lt;/gallery&amp;gt; &amp;lt;/center&amp;gt;  Demonstration o...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;gallery heights=300 widths=550 &amp;gt;&lt;br /&gt;
Image:Example_android_video.jpg| Colorized image gradient being displayed on an Android phone.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Demonstration of how to capture and process a video stream in real-time using BoofCV on an Android device as a [https://developer.android.com/guide/fragments Fragment]. Using Fragments as compared to the old style multi Activity projects in Android is a cleaner API and is the approach that you should use going forward. BoofCV provides ImageProcessingFragment and CameraProcessFragment. The former makes it easy to process and display the original image with visuals, while the other just provides a way to captures the video feed. The new BoofCV Android API is designed so that multiple video streams can be processed at once.&lt;br /&gt;
&lt;br /&gt;
Example File: [https://github.com/lessthanoptimal/BoofCV/blob/v0.44/integration/boofcv-android/examples/fragment/app/src/main/java/org/boofcv/android/example/EdgeFragment.kt EdgeFragment]&lt;br /&gt;
&lt;br /&gt;
Complete Project: [https://github.com/lessthanoptimal/BoofCV/tree/v0.44/integration/boofcv-android/examples/fragment Android Project]&lt;br /&gt;
&lt;br /&gt;
Concepts:&lt;br /&gt;
* Android&lt;br /&gt;
* Image Gradient&lt;br /&gt;
&lt;br /&gt;
Related Tutorial:&lt;br /&gt;
* [[Android_support| Android Support]]&lt;br /&gt;
&lt;br /&gt;
Related Examples:&lt;br /&gt;
* [[Example_Image_Filter| Image Filter]]&lt;br /&gt;
&lt;br /&gt;
= Example Code =&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Process a video feed, computes edges, displays a visualization of the edges.&lt;br /&gt;
 */&lt;br /&gt;
class EdgeFragment : ImageProcessingFragment() {&lt;br /&gt;
    // Bindings for user interface&lt;br /&gt;
    private var _uiBinding: EdgeLayoutBinding? = null&lt;br /&gt;
    private val uiBinding get() = _uiBinding!!&lt;br /&gt;
&lt;br /&gt;
    init {&lt;br /&gt;
        val derivX = GrayS16(0, 0)&lt;br /&gt;
        val derivY = GrayS16(0, 0)&lt;br /&gt;
        val gradientOp = FactoryDerivative.three(GrayU8::class.java, GrayS16::class.java)&lt;br /&gt;
&lt;br /&gt;
        imageProcessing = object : AndroidImageProcessing {&lt;br /&gt;
            // These are images that Android understands and used to visualization&lt;br /&gt;
            // A double buffer strategy is used to allow the processing and UI threads&lt;br /&gt;
            // to run with minimal coupling&lt;br /&gt;
            var bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888)&lt;br /&gt;
            var bitmapWork = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888)&lt;br /&gt;
            val bitmapTmp = DogArray_I8()&lt;br /&gt;
&lt;br /&gt;
            override fun process(frame: LockImages) {&lt;br /&gt;
                // Compute the gradient&lt;br /&gt;
                gradientOp.process(frame.gray, derivX, derivY)&lt;br /&gt;
&lt;br /&gt;
                // Make sure the bitmap is large enough&lt;br /&gt;
                bitmapWork = ConvertBitmap.checkDeclare(frame.gray, bitmapWork)&lt;br /&gt;
&lt;br /&gt;
                // Visualize the gradient&lt;br /&gt;
                VisualizeImageData.colorizeGradient(derivX, derivY, -1, bitmapWork, bitmapTmp);&lt;br /&gt;
&lt;br /&gt;
                // Visualization and image processing are two different threads.&lt;br /&gt;
                // To avoid reading / writing the same data structure at the same time we will&lt;br /&gt;
                // synchronize&lt;br /&gt;
                synchronized(this) {&lt;br /&gt;
                    // Perform a fast swap&lt;br /&gt;
                    val tmp = bitmapWork&lt;br /&gt;
                    bitmapWork = bitmap&lt;br /&gt;
                    bitmap = tmp&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            override fun visualize(canvas: Canvas, imageToView: Matrix) {&lt;br /&gt;
                // Draw the visualized gradient to the canvas&lt;br /&gt;
                synchronized(this) {&lt;br /&gt;
                    canvas.drawBitmap(this.bitmap, imageToView, null)&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    override fun onDestroyView() {&lt;br /&gt;
        _uiBinding = null&lt;br /&gt;
        super.onDestroyView()&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Need to tell it where it will render the results&lt;br /&gt;
     */&lt;br /&gt;
    override fun getCameraFrame(): FrameLayout {&lt;br /&gt;
        return uiBinding.cameraFrame&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    override fun onCreateView(&lt;br /&gt;
        inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?&lt;br /&gt;
    ): View {&lt;br /&gt;
        _uiBinding = EdgeLayoutBinding.inflate(inflater, container, false)&lt;br /&gt;
        return uiBinding.root&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    override fun lookupCameraConfig(selectedCam: CameraID, resolution: ImageDimension) {&lt;br /&gt;
        // Tell it to use the first camera that it finds that&amp;#039;s back facing. If none are found&lt;br /&gt;
        // then it will use a front facing camera&lt;br /&gt;
        val cameras = BoofAndroidUtils.getAllCameras(cameraManager)&lt;br /&gt;
        for (camera in cameras) {&lt;br /&gt;
            selectedCam.setTo(camera)&lt;br /&gt;
&lt;br /&gt;
            val characteristics = cameraManager.getCameraCharacteristics(camera.id)&lt;br /&gt;
            val facing = characteristics.get(CameraCharacteristics.LENS_FACING)&lt;br /&gt;
&lt;br /&gt;
            if (BoofAndroidUtils.facingToString(facing) == &amp;quot;back&amp;quot;) {&lt;br /&gt;
                break&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Hard code 640x480 If there isn&amp;#039;t an exact match it will select something close&lt;br /&gt;
        resolution.setTo(640, 480)&lt;br /&gt;
&lt;br /&gt;
        Log.i(TAG, &amp;quot;Selected camera $selectedCam&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    override fun customConfigure(cameraID: CameraID, builder: CaptureRequest.Builder) {&lt;br /&gt;
        // nothing special needs to be done so this function is empty&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Download&amp;diff=3262</id>
		<title>Download</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Download&amp;diff=3262"/>
		<updated>2023-06-01T03:42:28Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BoofCV is available from its central repository at Github or through periodic releases.  Below are links to the latest stable release hosted on SourceForge.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Latest Stable Release:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* [https://sourceforge.net/projects/boofcv/files/v0.43/ Jars and Source Code]&lt;br /&gt;
* [https://github.com/lessthanoptimal/BoofCV/blob/v0.43.1/change.txt Change Log]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Pre-Built Applications:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* [[Applications#Examples_and_Demonstrations| Examples and Demonstrations ]]&lt;br /&gt;
&lt;br /&gt;
If you encounter any problems getting BoofCV up and running, please let us know!  A bug might have slipped through testing or if the instructions are not clear we would like to know.&lt;br /&gt;
&lt;br /&gt;
= Java Version =&lt;br /&gt;
&lt;br /&gt;
To run BoofCV requires Java 11 and above. Building BoofCV requires Java 17, but if you use the build in Gradle script that is handled for you.&lt;br /&gt;
&lt;br /&gt;
Where to download the Java Virtual Machine&lt;br /&gt;
* https://www.azul.com/downloads/zulu/&lt;br /&gt;
* https://adoptopenjdk.net/&lt;br /&gt;
&lt;br /&gt;
NOTE: Version 0.39 and before maintained compatibility with Java 8. &lt;br /&gt;
&lt;br /&gt;
= Maven Central =&lt;br /&gt;
The easiest way to use boofcv is to reference its jars on [https://search.maven.org/search?q=g:org.boofcv Maven Central].  See below for Maven and Gradle code.  BoofCV is broken up into many modules.  To make it easier to use BoofCV all of its core functionality can be referenced using the &amp;#039;all&amp;#039; module.  Individual modules in &amp;quot;integration&amp;quot; still must be referenced individually.&lt;br /&gt;
&lt;br /&gt;
Artifact List&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-core&amp;#039;&amp;#039; : All the core functionality of BoofCV.&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-all&amp;#039;&amp;#039; : All the core and integration packages in BoofCV. This can be very large. You probably want core!&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-android&amp;#039;&amp;#039; : [http://developer.android.com/index.html Android] support &lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-WebcamCapture&amp;#039;&amp;#039; : [http://webcam-capture.sarxos.pl/ Webcam Capture support]&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-javacv&amp;#039;&amp;#039; : [https://github.com/bytedeco/javacv JavaCV] (Reading OpenCV files)&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-ffmpeg&amp;#039;&amp;#039; : [https://github.com/bytedeco/javacpp-presets javacpp-presets] Reading videos&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-swing&amp;#039;&amp;#039; : Visualization using Java Swing&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-jcodec&amp;#039;&amp;#039; : [http://jcodec.org/ jcodec] Pure Java (and buggy) library for reading videos.&lt;br /&gt;
&lt;br /&gt;
== Gradle Dependencies ==&lt;br /&gt;
&lt;br /&gt;
Here are some examples for how to add BoofCV to your Gradle project. You will need to replace $VERSION with the latest version of BoofCV, e.g. 0.43. If you just want image processing, with very few external dependencies, just include the following in your Gradle script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
api(&amp;quot;org.boofcv:boofcv-core:$VERSION&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
It is possible to include only the modules inside of core that you need. While not difficult, you will need to learn more about how BoofCV is structured.&lt;br /&gt;
&lt;br /&gt;
Since this does not include GUI or Webcam code most of the examples will not run! Here&amp;#039;s how you can add them:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&amp;#039;boofcv-core&amp;#039;,&amp;#039;boofcv-swing&amp;#039;,&amp;#039;boofcv-WebcamCapture&amp;#039;,&amp;#039;demonstrations&amp;#039;].each&lt;br /&gt;
    { String a -&amp;gt; compile group: &amp;#039;org.boofcv&amp;#039;, name: a, version: VERSION }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Deep Learning does add some external dependencies that most people don&amp;#039;t need. In the future that might become an optional dependency. For now look at [[Optimizing BoofCV]] for more complex ways to reduce the jar size.&lt;br /&gt;
&lt;br /&gt;
= Bleeding Edge = &lt;br /&gt;
&lt;br /&gt;
The absolutely latest code is available on Github. This code should be considered developmental and may or may not work. Please follow build instructions included in the [https://github.com/lessthanoptimal/BoofCV#building-from-source README.MD] as those will be up to date. There is also a (slightly) out of date [https://youtu.be/qMTtdiujAtQ?t=67 YouTube Video].&lt;br /&gt;
&lt;br /&gt;
= Past Releases =&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; width=600px cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
! Version !! Link !! Description &lt;br /&gt;
|-&lt;br /&gt;
| v0.43.1 || [https://sourceforge.net/projects/boofcv/files/v0.43 Link] || Mesh viewer/rendering, STL files, bug fixes &lt;br /&gt;
|-&lt;br /&gt;
| v0.42 || [https://sourceforge.net/projects/boofcv/files/v0.42 Link] || Bug fixes, new filters, OBJ support&lt;br /&gt;
|-&lt;br /&gt;
| v0.41 || [https://sourceforge.net/projects/boofcv/files/v0.41 Link] || Aztec Code, Android cameras, multi camera calibration, mesh&lt;br /&gt;
|-&lt;br /&gt;
| v0.40.1 || [https://sourceforge.net/projects/boofcv/files/v0.40 Link] || Micro QR Code and strict null enforcement&lt;br /&gt;
|-&lt;br /&gt;
| v0.39.1 || [https://sourceforge.net/projects/boofcv/files/v0.39.1 Link] || Markers (ECoCheck, AruCo), Calibration Apps, Simulation&lt;br /&gt;
|-&lt;br /&gt;
| v0.38 || [https://sourceforge.net/projects/boofcv/files/v0.38 Link] || Better MVS and Scene Recognition&lt;br /&gt;
|-&lt;br /&gt;
| v0.37 || [https://sourceforge.net/projects/boofcv/files/v0.37 Link] || Mutli-View Stereo&lt;br /&gt;
|-&lt;br /&gt;
| v0.36 || [https://sourceforge.net/projects/boofcv/files/v0.36 Link] || Random dot markers, SBA in Visual odometry, visualization&lt;br /&gt;
|-&lt;br /&gt;
| v0.35 || [https://sourceforge.net/projects/boofcv/files/v0.35 Link] || Even better Chessboard, stereo, various&lt;br /&gt;
|-&lt;br /&gt;
| v0.34 || [https://sourceforge.net/projects/boofcv/files/v0.34 Link] || More Concurrency, Chessboard, Lines&lt;br /&gt;
|-&lt;br /&gt;
| v0.33 || [https://sourceforge.net/projects/boofcv/files/v0.33.1 Link] || Concurrency, SFM, QR Fixes&lt;br /&gt;
|-&lt;br /&gt;
| v0.32 || [https://sourceforge.net/projects/boofcv/files/v0.32 Link] || Uncalibrated Stereo&lt;br /&gt;
|-&lt;br /&gt;
| v0.31 || [https://sourceforge.net/projects/boofcv/files/v0.31 Link] || Sparse Bundle Adjustment&lt;br /&gt;
|-&lt;br /&gt;
| v0.30 || [https://sourceforge.net/projects/boofcv/files/v0.30 Link] || Android and SFM&lt;br /&gt;
|-&lt;br /&gt;
| v0.29 || [https://sourceforge.net/projects/boofcv/files/v0.29 Link] || BOverride, Background GMM, GVersion&lt;br /&gt;
|-&lt;br /&gt;
| v0.28 || [https://sourceforge.net/projects/boofcv/files/v0.28 Link] || Fisheye calibration, Hex target, QR Code, polyline&lt;br /&gt;
|-&lt;br /&gt;
| v0.27 || [https://sourceforge.net/projects/boofcv/files/v0.27 Link] || Module name changes, new calib target, new distortion&lt;br /&gt;
|-&lt;br /&gt;
| v0.26 || [https://sourceforge.net/projects/boofcv/files/v0.26 Link] || Critical bug fixes, more examples, improved asymmetric grid&lt;br /&gt;
|-&lt;br /&gt;
| v0.25 || [https://sourceforge.net/projects/boofcv/files/v0.25 Link] || 360 and fisheye support, Deep Learning, circle asym grid, ... etc&lt;br /&gt;
|-&lt;br /&gt;
| v0.24.1 || [https://sourceforge.net/projects/boofcv/files/v0.24.1 Link] || Fixed dependency on a SNAPSHOT &lt;br /&gt;
|-&lt;br /&gt;
| v0.24 || [https://sourceforge.net/projects/boofcv/files/v0.24 Link] || Replaced Xuggler with JavaCV&lt;br /&gt;
|-&lt;br /&gt;
| v0.23 || [https://sourceforge.net/projects/boofcv/files/v0.23 Link] || Refactoring of image names&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Download&amp;diff=3261</id>
		<title>Download</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Download&amp;diff=3261"/>
		<updated>2023-06-01T03:42:15Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BoofCV is available from its central repository at Github or through periodic releases.  Below are links to the latest stable release hosted on SourceForge.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Latest Stable Release:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* [https://sourceforge.net/projects/boofcv/files/v0.43/ Jars and Source Code]&lt;br /&gt;
* [https://github.com/lessthanoptimal/BoofCV/blob/v0.43/change.txt Change Log]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Pre-Built Applications:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* [[Applications#Examples_and_Demonstrations| Examples and Demonstrations ]]&lt;br /&gt;
&lt;br /&gt;
If you encounter any problems getting BoofCV up and running, please let us know!  A bug might have slipped through testing or if the instructions are not clear we would like to know.&lt;br /&gt;
&lt;br /&gt;
= Java Version =&lt;br /&gt;
&lt;br /&gt;
To run BoofCV requires Java 11 and above. Building BoofCV requires Java 17, but if you use the build in Gradle script that is handled for you.&lt;br /&gt;
&lt;br /&gt;
Where to download the Java Virtual Machine&lt;br /&gt;
* https://www.azul.com/downloads/zulu/&lt;br /&gt;
* https://adoptopenjdk.net/&lt;br /&gt;
&lt;br /&gt;
NOTE: Version 0.39 and before maintained compatibility with Java 8. &lt;br /&gt;
&lt;br /&gt;
= Maven Central =&lt;br /&gt;
The easiest way to use boofcv is to reference its jars on [https://search.maven.org/search?q=g:org.boofcv Maven Central].  See below for Maven and Gradle code.  BoofCV is broken up into many modules.  To make it easier to use BoofCV all of its core functionality can be referenced using the &amp;#039;all&amp;#039; module.  Individual modules in &amp;quot;integration&amp;quot; still must be referenced individually.&lt;br /&gt;
&lt;br /&gt;
Artifact List&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-core&amp;#039;&amp;#039; : All the core functionality of BoofCV.&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-all&amp;#039;&amp;#039; : All the core and integration packages in BoofCV. This can be very large. You probably want core!&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-android&amp;#039;&amp;#039; : [http://developer.android.com/index.html Android] support &lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-WebcamCapture&amp;#039;&amp;#039; : [http://webcam-capture.sarxos.pl/ Webcam Capture support]&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-javacv&amp;#039;&amp;#039; : [https://github.com/bytedeco/javacv JavaCV] (Reading OpenCV files)&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-ffmpeg&amp;#039;&amp;#039; : [https://github.com/bytedeco/javacpp-presets javacpp-presets] Reading videos&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-swing&amp;#039;&amp;#039; : Visualization using Java Swing&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-jcodec&amp;#039;&amp;#039; : [http://jcodec.org/ jcodec] Pure Java (and buggy) library for reading videos.&lt;br /&gt;
&lt;br /&gt;
== Gradle Dependencies ==&lt;br /&gt;
&lt;br /&gt;
Here are some examples for how to add BoofCV to your Gradle project. You will need to replace $VERSION with the latest version of BoofCV, e.g. 0.43. If you just want image processing, with very few external dependencies, just include the following in your Gradle script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
api(&amp;quot;org.boofcv:boofcv-core:$VERSION&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
It is possible to include only the modules inside of core that you need. While not difficult, you will need to learn more about how BoofCV is structured.&lt;br /&gt;
&lt;br /&gt;
Since this does not include GUI or Webcam code most of the examples will not run! Here&amp;#039;s how you can add them:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&amp;#039;boofcv-core&amp;#039;,&amp;#039;boofcv-swing&amp;#039;,&amp;#039;boofcv-WebcamCapture&amp;#039;,&amp;#039;demonstrations&amp;#039;].each&lt;br /&gt;
    { String a -&amp;gt; compile group: &amp;#039;org.boofcv&amp;#039;, name: a, version: VERSION }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Deep Learning does add some external dependencies that most people don&amp;#039;t need. In the future that might become an optional dependency. For now look at [[Optimizing BoofCV]] for more complex ways to reduce the jar size.&lt;br /&gt;
&lt;br /&gt;
= Bleeding Edge = &lt;br /&gt;
&lt;br /&gt;
The absolutely latest code is available on Github. This code should be considered developmental and may or may not work. Please follow build instructions included in the [https://github.com/lessthanoptimal/BoofCV#building-from-source README.MD] as those will be up to date. There is also a (slightly) out of date [https://youtu.be/qMTtdiujAtQ?t=67 YouTube Video].&lt;br /&gt;
&lt;br /&gt;
= Past Releases =&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; width=600px cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
! Version !! Link !! Description &lt;br /&gt;
|-&lt;br /&gt;
| v0.43.1 || [https://sourceforge.net/projects/boofcv/files/v0.43 Link] || Mesh viewer/rendering, STL files, bug fixes &lt;br /&gt;
|-&lt;br /&gt;
| v0.42 || [https://sourceforge.net/projects/boofcv/files/v0.42 Link] || Bug fixes, new filters, OBJ support&lt;br /&gt;
|-&lt;br /&gt;
| v0.41 || [https://sourceforge.net/projects/boofcv/files/v0.41 Link] || Aztec Code, Android cameras, multi camera calibration, mesh&lt;br /&gt;
|-&lt;br /&gt;
| v0.40.1 || [https://sourceforge.net/projects/boofcv/files/v0.40 Link] || Micro QR Code and strict null enforcement&lt;br /&gt;
|-&lt;br /&gt;
| v0.39.1 || [https://sourceforge.net/projects/boofcv/files/v0.39.1 Link] || Markers (ECoCheck, AruCo), Calibration Apps, Simulation&lt;br /&gt;
|-&lt;br /&gt;
| v0.38 || [https://sourceforge.net/projects/boofcv/files/v0.38 Link] || Better MVS and Scene Recognition&lt;br /&gt;
|-&lt;br /&gt;
| v0.37 || [https://sourceforge.net/projects/boofcv/files/v0.37 Link] || Mutli-View Stereo&lt;br /&gt;
|-&lt;br /&gt;
| v0.36 || [https://sourceforge.net/projects/boofcv/files/v0.36 Link] || Random dot markers, SBA in Visual odometry, visualization&lt;br /&gt;
|-&lt;br /&gt;
| v0.35 || [https://sourceforge.net/projects/boofcv/files/v0.35 Link] || Even better Chessboard, stereo, various&lt;br /&gt;
|-&lt;br /&gt;
| v0.34 || [https://sourceforge.net/projects/boofcv/files/v0.34 Link] || More Concurrency, Chessboard, Lines&lt;br /&gt;
|-&lt;br /&gt;
| v0.33 || [https://sourceforge.net/projects/boofcv/files/v0.33.1 Link] || Concurrency, SFM, QR Fixes&lt;br /&gt;
|-&lt;br /&gt;
| v0.32 || [https://sourceforge.net/projects/boofcv/files/v0.32 Link] || Uncalibrated Stereo&lt;br /&gt;
|-&lt;br /&gt;
| v0.31 || [https://sourceforge.net/projects/boofcv/files/v0.31 Link] || Sparse Bundle Adjustment&lt;br /&gt;
|-&lt;br /&gt;
| v0.30 || [https://sourceforge.net/projects/boofcv/files/v0.30 Link] || Android and SFM&lt;br /&gt;
|-&lt;br /&gt;
| v0.29 || [https://sourceforge.net/projects/boofcv/files/v0.29 Link] || BOverride, Background GMM, GVersion&lt;br /&gt;
|-&lt;br /&gt;
| v0.28 || [https://sourceforge.net/projects/boofcv/files/v0.28 Link] || Fisheye calibration, Hex target, QR Code, polyline&lt;br /&gt;
|-&lt;br /&gt;
| v0.27 || [https://sourceforge.net/projects/boofcv/files/v0.27 Link] || Module name changes, new calib target, new distortion&lt;br /&gt;
|-&lt;br /&gt;
| v0.26 || [https://sourceforge.net/projects/boofcv/files/v0.26 Link] || Critical bug fixes, more examples, improved asymmetric grid&lt;br /&gt;
|-&lt;br /&gt;
| v0.25 || [https://sourceforge.net/projects/boofcv/files/v0.25 Link] || 360 and fisheye support, Deep Learning, circle asym grid, ... etc&lt;br /&gt;
|-&lt;br /&gt;
| v0.24.1 || [https://sourceforge.net/projects/boofcv/files/v0.24.1 Link] || Fixed dependency on a SNAPSHOT &lt;br /&gt;
|-&lt;br /&gt;
| v0.24 || [https://sourceforge.net/projects/boofcv/files/v0.24 Link] || Replaced Xuggler with JavaCV&lt;br /&gt;
|-&lt;br /&gt;
| v0.23 || [https://sourceforge.net/projects/boofcv/files/v0.23 Link] || Refactoring of image names&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Download&amp;diff=3260</id>
		<title>Download</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Download&amp;diff=3260"/>
		<updated>2023-06-01T03:42:03Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BoofCV is available from its central repository at Github or through periodic releases.  Below are links to the latest stable release hosted on SourceForge.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Latest Stable Release:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* [https://sourceforge.net/projects/boofcv/files/v0.43/ Jars and Source Code]&lt;br /&gt;
* [https://github.com/lessthanoptimal/BoofCV/blob/v0.43/change.txt Change Log]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Pre-Built Applications:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* [[Applications#Examples_and_Demonstrations| Examples and Demonstrations ]]&lt;br /&gt;
&lt;br /&gt;
If you encounter any problems getting BoofCV up and running, please let us know!  A bug might have slipped through testing or if the instructions are not clear we would like to know.&lt;br /&gt;
&lt;br /&gt;
= Java Version =&lt;br /&gt;
&lt;br /&gt;
To run BoofCV requires Java 11 and above. Building BoofCV requires Java 17, but if you use the build in Gradle script that is handled for you.&lt;br /&gt;
&lt;br /&gt;
Where to download the Java Virtual Machine&lt;br /&gt;
* https://www.azul.com/downloads/zulu/&lt;br /&gt;
* https://adoptopenjdk.net/&lt;br /&gt;
&lt;br /&gt;
NOTE: Version 0.39 and before maintained compatibility with Java 8. &lt;br /&gt;
&lt;br /&gt;
= Maven Central =&lt;br /&gt;
The easiest way to use boofcv is to reference its jars on [https://search.maven.org/search?q=g:org.boofcv Maven Central].  See below for Maven and Gradle code.  BoofCV is broken up into many modules.  To make it easier to use BoofCV all of its core functionality can be referenced using the &amp;#039;all&amp;#039; module.  Individual modules in &amp;quot;integration&amp;quot; still must be referenced individually.&lt;br /&gt;
&lt;br /&gt;
Artifact List&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-core&amp;#039;&amp;#039; : All the core functionality of BoofCV.&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-all&amp;#039;&amp;#039; : All the core and integration packages in BoofCV. This can be very large. You probably want core!&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-android&amp;#039;&amp;#039; : [http://developer.android.com/index.html Android] support &lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-WebcamCapture&amp;#039;&amp;#039; : [http://webcam-capture.sarxos.pl/ Webcam Capture support]&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-javacv&amp;#039;&amp;#039; : [https://github.com/bytedeco/javacv JavaCV] (Reading OpenCV files)&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-ffmpeg&amp;#039;&amp;#039; : [https://github.com/bytedeco/javacpp-presets javacpp-presets] Reading videos&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-swing&amp;#039;&amp;#039; : Visualization using Java Swing&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-jcodec&amp;#039;&amp;#039; : [http://jcodec.org/ jcodec] Pure Java (and buggy) library for reading videos.&lt;br /&gt;
&lt;br /&gt;
== Gradle Dependencies ==&lt;br /&gt;
&lt;br /&gt;
Here are some examples for how to add BoofCV to your Gradle project. You will need to replace $VERSION with the latest version of BoofCV, e.g. 0.43. If you just want image processing, with very few external dependencies, just include the following in your Gradle script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
api(&amp;quot;org.boofcv:boofcv-core:$VERSION&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
It is possible to include only the modules inside of core that you need. While not difficult, you will need to learn more about how BoofCV is structured.&lt;br /&gt;
&lt;br /&gt;
Since this does not include GUI or Webcam code most of the examples will not run! Here&amp;#039;s how you can add them:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&amp;#039;boofcv-core&amp;#039;,&amp;#039;boofcv-swing&amp;#039;,&amp;#039;boofcv-WebcamCapture&amp;#039;,&amp;#039;demonstrations&amp;#039;].each&lt;br /&gt;
    { String a -&amp;gt; compile group: &amp;#039;org.boofcv&amp;#039;, name: a, version: VERSION }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Deep Learning does add some external dependencies that most people don&amp;#039;t need. In the future that might become an optional dependency. For now look at [[Optimizing BoofCV]] for more complex ways to reduce the jar size.&lt;br /&gt;
&lt;br /&gt;
= Bleeding Edge = &lt;br /&gt;
&lt;br /&gt;
The absolutely latest code is available on Github. This code should be considered developmental and may or may not work. Please follow build instructions included in the [https://github.com/lessthanoptimal/BoofCV#building-from-source README.MD] as those will be up to date. There is also a (slightly) out of date [https://youtu.be/qMTtdiujAtQ?t=67 YouTube Video].&lt;br /&gt;
&lt;br /&gt;
= Past Releases =&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; width=600px cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
! Version !! Link !! Description &lt;br /&gt;
|-&lt;br /&gt;
| v0.43.1 || [https://sourceforge.net/projects/boofcv/files/v0.42 Link] || Mesh viewer/rendering, STL files, bug fixes &lt;br /&gt;
|-&lt;br /&gt;
| v0.42 || [https://sourceforge.net/projects/boofcv/files/v0.42 Link] || Bug fixes, new filters, OBJ support&lt;br /&gt;
|-&lt;br /&gt;
| v0.41 || [https://sourceforge.net/projects/boofcv/files/v0.41 Link] || Aztec Code, Android cameras, multi camera calibration, mesh&lt;br /&gt;
|-&lt;br /&gt;
| v0.40.1 || [https://sourceforge.net/projects/boofcv/files/v0.40 Link] || Micro QR Code and strict null enforcement&lt;br /&gt;
|-&lt;br /&gt;
| v0.39.1 || [https://sourceforge.net/projects/boofcv/files/v0.39.1 Link] || Markers (ECoCheck, AruCo), Calibration Apps, Simulation&lt;br /&gt;
|-&lt;br /&gt;
| v0.38 || [https://sourceforge.net/projects/boofcv/files/v0.38 Link] || Better MVS and Scene Recognition&lt;br /&gt;
|-&lt;br /&gt;
| v0.37 || [https://sourceforge.net/projects/boofcv/files/v0.37 Link] || Mutli-View Stereo&lt;br /&gt;
|-&lt;br /&gt;
| v0.36 || [https://sourceforge.net/projects/boofcv/files/v0.36 Link] || Random dot markers, SBA in Visual odometry, visualization&lt;br /&gt;
|-&lt;br /&gt;
| v0.35 || [https://sourceforge.net/projects/boofcv/files/v0.35 Link] || Even better Chessboard, stereo, various&lt;br /&gt;
|-&lt;br /&gt;
| v0.34 || [https://sourceforge.net/projects/boofcv/files/v0.34 Link] || More Concurrency, Chessboard, Lines&lt;br /&gt;
|-&lt;br /&gt;
| v0.33 || [https://sourceforge.net/projects/boofcv/files/v0.33.1 Link] || Concurrency, SFM, QR Fixes&lt;br /&gt;
|-&lt;br /&gt;
| v0.32 || [https://sourceforge.net/projects/boofcv/files/v0.32 Link] || Uncalibrated Stereo&lt;br /&gt;
|-&lt;br /&gt;
| v0.31 || [https://sourceforge.net/projects/boofcv/files/v0.31 Link] || Sparse Bundle Adjustment&lt;br /&gt;
|-&lt;br /&gt;
| v0.30 || [https://sourceforge.net/projects/boofcv/files/v0.30 Link] || Android and SFM&lt;br /&gt;
|-&lt;br /&gt;
| v0.29 || [https://sourceforge.net/projects/boofcv/files/v0.29 Link] || BOverride, Background GMM, GVersion&lt;br /&gt;
|-&lt;br /&gt;
| v0.28 || [https://sourceforge.net/projects/boofcv/files/v0.28 Link] || Fisheye calibration, Hex target, QR Code, polyline&lt;br /&gt;
|-&lt;br /&gt;
| v0.27 || [https://sourceforge.net/projects/boofcv/files/v0.27 Link] || Module name changes, new calib target, new distortion&lt;br /&gt;
|-&lt;br /&gt;
| v0.26 || [https://sourceforge.net/projects/boofcv/files/v0.26 Link] || Critical bug fixes, more examples, improved asymmetric grid&lt;br /&gt;
|-&lt;br /&gt;
| v0.25 || [https://sourceforge.net/projects/boofcv/files/v0.25 Link] || 360 and fisheye support, Deep Learning, circle asym grid, ... etc&lt;br /&gt;
|-&lt;br /&gt;
| v0.24.1 || [https://sourceforge.net/projects/boofcv/files/v0.24.1 Link] || Fixed dependency on a SNAPSHOT &lt;br /&gt;
|-&lt;br /&gt;
| v0.24 || [https://sourceforge.net/projects/boofcv/files/v0.24 Link] || Replaced Xuggler with JavaCV&lt;br /&gt;
|-&lt;br /&gt;
| v0.23 || [https://sourceforge.net/projects/boofcv/files/v0.23 Link] || Refactoring of image names&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Main_Page&amp;diff=3259</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Main_Page&amp;diff=3259"/>
		<updated>2023-06-01T03:38:49Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&lt;br /&gt;
[[File:Boofcv_logo_circles_frontpage.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
BoofCV is an open source library written from scratch for real-time computer vision. Its functionality covers a range of subjects, low-level image processing, camera calibration, feature detection/tracking, structure-from-motion, fiducial detection, and recognition. BoofCV has been released under an Apache  2.0 license for both academic and commercial use.&lt;br /&gt;
&lt;br /&gt;
BoofCV is organized into several packages: &amp;#039;&amp;#039;image processing&amp;#039;&amp;#039;, &amp;#039;&amp;#039;features&amp;#039;&amp;#039;, &amp;#039;&amp;#039;geometric vision&amp;#039;&amp;#039;, &amp;#039;&amp;#039;calibration&amp;#039;&amp;#039;, &amp;#039;&amp;#039;recognition&amp;#039;&amp;#039;,&amp;#039;&amp;#039;visualize&amp;#039;&amp;#039;, and &amp;#039;&amp;#039;IO&amp;#039;&amp;#039;.  &amp;#039;&amp;#039;Image processing&amp;#039;&amp;#039; contains commonly used image processing functions which operate directly on pixels.  &amp;#039;&amp;#039;Features&amp;#039;&amp;#039; contains feature extraction algorithms for use in higher level operations.  &amp;#039;&amp;#039;Calibration&amp;#039;&amp;#039; has routines for determining the camera&amp;#039;s intrinsic and extrinsic parameters.  &amp;#039;&amp;#039;Recognition&amp;#039;&amp;#039; is for recognition and tracking complex visual objects.  &amp;#039;&amp;#039;Geometric vision&amp;#039;&amp;#039; is composed of routines for processing extracted image features using 2D and 3D geometry. &amp;#039;&amp;#039;Visualize&amp;#039;&amp;#039; has routines for rendering and displaying extracted features.  &amp;#039;&amp;#039;IO&amp;#039;&amp;#039; has input and output routines for different data structures.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| &lt;br /&gt;
|-&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/wgPzlokxbXw|300|center}}&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/O_yAdsT8d84|300|center}}&lt;br /&gt;
|-&lt;br /&gt;
! New calibration tools in v0.39&lt;br /&gt;
! Three View Self Calibration&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://www.ninox360.com/calibration-targets 2022-Nov: Create calibration targets in your browser]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://www.ninox360.com/barcode-scanner 2022-Nov: Barcode scanner webapp]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://medium.com/p/35b431fcccf1 2022-Jan: Article on scanning Micro QR Codes]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[[Tutorial_Camera_Calibration|2021-Oct: Camera Calibration Tutorial has been re-written.]]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://youtu.be/RCL5tSt189M 2021-Mar: Stereo Cloud from Mars Perseverance Rover]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:Loose-lips.jpg|125px|link=https://groups.google.com/group/boofcv]] ||&lt;br /&gt;
{| width=&amp;quot;400pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Current Release: &amp;#039;&amp;#039;v0.43.1&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Date: &amp;#039;&amp;#039;May 31, 2023&amp;#039;&amp;#039; &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://github.com/lessthanoptimal/BoofCV/blob/v0.43.1/change.txt Change Log]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://youtu.be/BbTPQ9mIoQU Video Summary v0.38]&lt;br /&gt;
|}&lt;br /&gt;
| [[File:Boofcv_bug_propaganda_poster_small.jpg|125px|link=https://github.com/lessthanoptimal/BoofCV/issues]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| width=&amp;quot;600pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; |  [[File:Ninox360_icon_logo_moto.png|400px|link=https://www.ninox360.com]]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | A start up from the creators of BoofCV.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-help-icon.png|100px|link=[[Manual]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Manual]]&lt;br /&gt;
|-&lt;br /&gt;
| [[FAQ | FAQ]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.boofcv.org/javadoc/ JavaDoc]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCV/issues Report Bug]&lt;br /&gt;
|-&lt;br /&gt;
| [https://groups.google.com/group/boofcv Message Board]&lt;br /&gt;
|-&lt;br /&gt;
| [[Papers and Reports| Papers/Reports]]&lt;br /&gt;
|} &lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-binary-icon.png|100px|link=[https://github.com/lessthanoptimal/BoofCV Source Code]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Download|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.youtube.com/user/BoofCV/videos Videos]&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Bounties| Bounties ]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Contributing|Contribute]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCPP BoofCPP]&lt;br /&gt;
|} &lt;br /&gt;
| width&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-graph-icon.png|100px|link=[[Performance:BoofCV]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Performance:BoofCV|Performance]]&lt;br /&gt;
|-&lt;br /&gt;
| [[BoofCV Roadmap | Road Map]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Validation:Algorithms | Validation]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Projects_Using_BoofCV | Users ]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Acknowledgements|Acknowledgements]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;SPAN STYLE=&amp;quot;font-size: 14pt;text-align:center&amp;quot;&amp;gt;Prebuild Stand Alone Applications&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Examples_and_Demonstrations|Examples / Demonstrations]] || Example and demonstration applications&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create QR Code|QR Code Generator]] || Create and print QR Codes&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Square_Binary|Square Fiducials]] || Binary/Image Square Fiducial Generator &lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Calibration_Fiducials|Calibration Targets]] || Calibration Target Generator&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Camera_Calibration|Calibration]] || Camera Calibration Application&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Undistort|Lens Undistortion]] ||  Batch Removal of Lens Distortion&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Downsize|Image Downsize]] ||  Batch Image Down Sampling with minimal aliasing&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
| colspan=5 style=&amp;quot;background-color:#ffffdd;&amp;quot; align=&amp;quot;center&amp;quot; |&lt;br /&gt;
== Capability Summary ==&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Image Processing &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Feature &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Recognition&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Geometric &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Integration&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Image Convolution || [[Example_Convolution|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Image Derivatives || [[Example_Image_Derivative|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Thresholding || [[Example_Thresholding|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Ops || [[Example_Binary_Image|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Space || [[Example_Color_Space|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interpolation || [[Example_Interpolation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Deformation || [[Example_Key_Point_Based_Deformation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Blur || [[Example_Image_Blur|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Enhancement || [[Example_Image_Enhancement|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Noise Removal || [[Example_Wavelet_Noise_Removal|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fourier Transform || [[Example_Discrete_Fourier_Transform|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Wavelet Decomposition || &lt;br /&gt;
|- &lt;br /&gt;
| Discrete Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Float Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Scale Space Image || &lt;br /&gt;
|-&lt;br /&gt;
| Equirectangular || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye Cameras || [[Example_Fisheye_To_Pinhole|Example]]&lt;br /&gt;
|&lt;br /&gt;
|} &lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Black Polygons || [[Example_Detect_Black_Polygons|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Black Ellipses || [[Example_Detect_Black_Ellipses|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interest Points || [[Example_Detect_Interest_Points|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Line Detection || [[Example_Detect_Lines|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Motion Detection || [[Example_Background_Moving_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Contours || [[Example_Binary_Image|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Polygon Fitting || [[Example_Fit_Polygon|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Ellipse Fitting || [[Example_Fit_Ellipse|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Template Matching || [[Example_Template_Matching|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Interest Points || [[Example_Detect_Describe_Interface|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Dense Features || [[Example_Dense_Image_Features|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Point Tracking || [[Example_Track_Point_Features|Example]]&lt;br /&gt;
|-  &lt;br /&gt;
| Non-max Suppression || [[Example_Non_Maximum_Suppression|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Dense Optical Flow || [[Example_Dense_Optical_Flow|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Superpixels || [[Example_Superpixels|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Color Segmentation || [[Example_Color_Segmentation|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Scene Recognition || [[Example_Scene_Recognition|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Image Lookup || [[Example_Color_Histogram_Lookup|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| KNN Classifier || [[Example_Scene_Classification|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| CNN Classifiers || [[Example_Image_Classification|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Object Tracking || [[Example_Tracker_Object|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fiducials || [[Tutorial_Fiducials|Tutorial]]&lt;br /&gt;
|-&lt;br /&gt;
| QR Codes || [[Tutorial_QRCodes|Tutorial]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| SFM || [[Tutorial_Geometric_Vision|Tutorial]] &lt;br /&gt;
|- &lt;br /&gt;
| Camera Calibration || [[Tutorial_Camera_Calibration|Tutorial]]&lt;br /&gt;
|- &lt;br /&gt;
| Mono Calibration || [[Example_Calibrate_Planar_Mono|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Fisheye Calibration || [[Example_Calibrate_Planar_Fisheye|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Stereo Calibration || [[Example_Calibrate_Planar_Stereo|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Remove Distortion || [[Example_Remove_Lens_Distortion|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Equi to Pinhole || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye to Equi|| [[Example_Fisheye_To_Equirectangular|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Bundle Adjustment || [[Example Sparse Bundle Adjustment|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| 3D Stereo Cloud || [[Example_Stereo_Disparity_3D|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Monocular Stereo || [[Example_Stereo_Single_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Uncalibrated Stereo || [[Example_Three_View_Stereo_Uncalibrated|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Multi Baseline Stereo || [[Example_Multi_Baseline_Stereo|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Scene Reconstruction || [[Example_Multiview_Reconstruction_Dense|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Video Stabilization || [[Example_Video_Stabilization|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Video Mosaic || [[Example_Video_Mosaic|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Stereo || [[Example_Stereo_Visual_Odometry|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Mono Plane || [[Example_Visual_Odometry_Monocular_Plane|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: RGB-D || [[Example_Visual_Odometry_Depth|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
| Visualization&lt;br /&gt;
|-&lt;br /&gt;
| [[Android_support|Android]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Videos and Webcams|Video]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Kinect|Kinect]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Processing|Processing]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/PyBoof Python]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Download&amp;diff=3258</id>
		<title>Download</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Download&amp;diff=3258"/>
		<updated>2023-05-16T04:17:28Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BoofCV is available from its central repository at Github or through periodic releases.  Below are links to the latest stable release hosted on SourceForge.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Latest Stable Release:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* [https://sourceforge.net/projects/boofcv/files/v0.42/ Jars and Source Code]&lt;br /&gt;
* [https://github.com/lessthanoptimal/BoofCV/blob/v0.42/change.txt Change Log]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Pre-Built Applications:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* [[Applications#Examples_and_Demonstrations| Examples and Demonstrations ]]&lt;br /&gt;
&lt;br /&gt;
If you encounter any problems getting BoofCV up and running, please let us know!  A bug might have slipped through testing or if the instructions are not clear we would like to know.&lt;br /&gt;
&lt;br /&gt;
= Java Version =&lt;br /&gt;
&lt;br /&gt;
To run BoofCV requires Java 11 and above. Building BoofCV requires Java 17, but if you use the build in Gradle script that is handled for you.&lt;br /&gt;
&lt;br /&gt;
Where to download the Java Virtual Machine&lt;br /&gt;
* https://www.azul.com/downloads/zulu/&lt;br /&gt;
* https://adoptopenjdk.net/&lt;br /&gt;
&lt;br /&gt;
NOTE: Version 0.39 and before maintained compatibility with Java 8. &lt;br /&gt;
&lt;br /&gt;
= Maven Central =&lt;br /&gt;
The easiest way to use boofcv is to reference its jars on [https://search.maven.org/search?q=g:org.boofcv Maven Central].  See below for Maven and Gradle code.  BoofCV is broken up into many modules.  To make it easier to use BoofCV all of its core functionality can be referenced using the &amp;#039;all&amp;#039; module.  Individual modules in &amp;quot;integration&amp;quot; still must be referenced individually.&lt;br /&gt;
&lt;br /&gt;
Artifact List&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-core&amp;#039;&amp;#039; : All the core functionality of BoofCV.&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-all&amp;#039;&amp;#039; : All the core and integration packages in BoofCV. This can be very large. You probably want core!&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-android&amp;#039;&amp;#039; : [http://developer.android.com/index.html Android] support &lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-WebcamCapture&amp;#039;&amp;#039; : [http://webcam-capture.sarxos.pl/ Webcam Capture support]&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-javacv&amp;#039;&amp;#039; : [https://github.com/bytedeco/javacv JavaCV] (Reading OpenCV files)&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-ffmpeg&amp;#039;&amp;#039; : [https://github.com/bytedeco/javacpp-presets javacpp-presets] Reading videos&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-swing&amp;#039;&amp;#039; : Visualization using Java Swing&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-jcodec&amp;#039;&amp;#039; : [http://jcodec.org/ jcodec] Pure Java (and buggy) library for reading videos.&lt;br /&gt;
&lt;br /&gt;
== Gradle Dependencies ==&lt;br /&gt;
&lt;br /&gt;
Here are some examples for how to add BoofCV to your Gradle project. You will need to replace $VERSION with the latest version of BoofCV, e.g. 0.43. If you just want image processing, with very few external dependencies, just include the following in your Gradle script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
api(&amp;quot;org.boofcv:boofcv-core:$VERSION&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
It is possible to include only the modules inside of core that you need. While not difficult, you will need to learn more about how BoofCV is structured.&lt;br /&gt;
&lt;br /&gt;
Since this does not include GUI or Webcam code most of the examples will not run! Here&amp;#039;s how you can add them:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&amp;#039;boofcv-core&amp;#039;,&amp;#039;boofcv-swing&amp;#039;,&amp;#039;boofcv-WebcamCapture&amp;#039;,&amp;#039;demonstrations&amp;#039;].each&lt;br /&gt;
    { String a -&amp;gt; compile group: &amp;#039;org.boofcv&amp;#039;, name: a, version: VERSION }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Deep Learning does add some external dependencies that most people don&amp;#039;t need. In the future that might become an optional dependency. For now look at [[Optimizing BoofCV]] for more complex ways to reduce the jar size.&lt;br /&gt;
&lt;br /&gt;
= Bleeding Edge = &lt;br /&gt;
&lt;br /&gt;
The absolutely latest code is available on Github. This code should be considered developmental and may or may not work. Please follow build instructions included in the [https://github.com/lessthanoptimal/BoofCV#building-from-source README.MD] as those will be up to date. There is also a (slightly) out of date [https://youtu.be/qMTtdiujAtQ?t=67 YouTube Video].&lt;br /&gt;
&lt;br /&gt;
= Past Releases =&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; width=600px cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
! Version !! Link !! Description &lt;br /&gt;
|-&lt;br /&gt;
| v0.42 || [https://sourceforge.net/projects/boofcv/files/v0.42 Link] || Bug fixes, new filters, OBJ support&lt;br /&gt;
|-&lt;br /&gt;
| v0.41 || [https://sourceforge.net/projects/boofcv/files/v0.41 Link] || Aztec Code, Android cameras, multi camera calibration, mesh&lt;br /&gt;
|-&lt;br /&gt;
| v0.40.1 || [https://sourceforge.net/projects/boofcv/files/v0.40 Link] || Micro QR Code and strict null enforcement&lt;br /&gt;
|-&lt;br /&gt;
| v0.39.1 || [https://sourceforge.net/projects/boofcv/files/v0.39.1 Link] || Markers (ECoCheck, AruCo), Calibration Apps, Simulation&lt;br /&gt;
|-&lt;br /&gt;
| v0.38 || [https://sourceforge.net/projects/boofcv/files/v0.38 Link] || Better MVS and Scene Recognition&lt;br /&gt;
|-&lt;br /&gt;
| v0.37 || [https://sourceforge.net/projects/boofcv/files/v0.37 Link] || Mutli-View Stereo&lt;br /&gt;
|-&lt;br /&gt;
| v0.36 || [https://sourceforge.net/projects/boofcv/files/v0.36 Link] || Random dot markers, SBA in Visual odometry, visualization&lt;br /&gt;
|-&lt;br /&gt;
| v0.35 || [https://sourceforge.net/projects/boofcv/files/v0.35 Link] || Even better Chessboard, stereo, various&lt;br /&gt;
|-&lt;br /&gt;
| v0.34 || [https://sourceforge.net/projects/boofcv/files/v0.34 Link] || More Concurrency, Chessboard, Lines&lt;br /&gt;
|-&lt;br /&gt;
| v0.33 || [https://sourceforge.net/projects/boofcv/files/v0.33.1 Link] || Concurrency, SFM, QR Fixes&lt;br /&gt;
|-&lt;br /&gt;
| v0.32 || [https://sourceforge.net/projects/boofcv/files/v0.32 Link] || Uncalibrated Stereo&lt;br /&gt;
|-&lt;br /&gt;
| v0.31 || [https://sourceforge.net/projects/boofcv/files/v0.31 Link] || Sparse Bundle Adjustment&lt;br /&gt;
|-&lt;br /&gt;
| v0.30 || [https://sourceforge.net/projects/boofcv/files/v0.30 Link] || Android and SFM&lt;br /&gt;
|-&lt;br /&gt;
| v0.29 || [https://sourceforge.net/projects/boofcv/files/v0.29 Link] || BOverride, Background GMM, GVersion&lt;br /&gt;
|-&lt;br /&gt;
| v0.28 || [https://sourceforge.net/projects/boofcv/files/v0.28 Link] || Fisheye calibration, Hex target, QR Code, polyline&lt;br /&gt;
|-&lt;br /&gt;
| v0.27 || [https://sourceforge.net/projects/boofcv/files/v0.27 Link] || Module name changes, new calib target, new distortion&lt;br /&gt;
|-&lt;br /&gt;
| v0.26 || [https://sourceforge.net/projects/boofcv/files/v0.26 Link] || Critical bug fixes, more examples, improved asymmetric grid&lt;br /&gt;
|-&lt;br /&gt;
| v0.25 || [https://sourceforge.net/projects/boofcv/files/v0.25 Link] || 360 and fisheye support, Deep Learning, circle asym grid, ... etc&lt;br /&gt;
|-&lt;br /&gt;
| v0.24.1 || [https://sourceforge.net/projects/boofcv/files/v0.24.1 Link] || Fixed dependency on a SNAPSHOT &lt;br /&gt;
|-&lt;br /&gt;
| v0.24 || [https://sourceforge.net/projects/boofcv/files/v0.24 Link] || Replaced Xuggler with JavaCV&lt;br /&gt;
|-&lt;br /&gt;
| v0.23 || [https://sourceforge.net/projects/boofcv/files/v0.23 Link] || Refactoring of image names&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Main_Page&amp;diff=3257</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Main_Page&amp;diff=3257"/>
		<updated>2023-05-16T04:16:36Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&lt;br /&gt;
[[File:Boofcv_logo_circles_frontpage.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
BoofCV is an open source library written from scratch for real-time computer vision. Its functionality covers a range of subjects, low-level image processing, camera calibration, feature detection/tracking, structure-from-motion, fiducial detection, and recognition. BoofCV has been released under an Apache  2.0 license for both academic and commercial use.&lt;br /&gt;
&lt;br /&gt;
BoofCV is organized into several packages: &amp;#039;&amp;#039;image processing&amp;#039;&amp;#039;, &amp;#039;&amp;#039;features&amp;#039;&amp;#039;, &amp;#039;&amp;#039;geometric vision&amp;#039;&amp;#039;, &amp;#039;&amp;#039;calibration&amp;#039;&amp;#039;, &amp;#039;&amp;#039;recognition&amp;#039;&amp;#039;,&amp;#039;&amp;#039;visualize&amp;#039;&amp;#039;, and &amp;#039;&amp;#039;IO&amp;#039;&amp;#039;.  &amp;#039;&amp;#039;Image processing&amp;#039;&amp;#039; contains commonly used image processing functions which operate directly on pixels.  &amp;#039;&amp;#039;Features&amp;#039;&amp;#039; contains feature extraction algorithms for use in higher level operations.  &amp;#039;&amp;#039;Calibration&amp;#039;&amp;#039; has routines for determining the camera&amp;#039;s intrinsic and extrinsic parameters.  &amp;#039;&amp;#039;Recognition&amp;#039;&amp;#039; is for recognition and tracking complex visual objects.  &amp;#039;&amp;#039;Geometric vision&amp;#039;&amp;#039; is composed of routines for processing extracted image features using 2D and 3D geometry. &amp;#039;&amp;#039;Visualize&amp;#039;&amp;#039; has routines for rendering and displaying extracted features.  &amp;#039;&amp;#039;IO&amp;#039;&amp;#039; has input and output routines for different data structures.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| &lt;br /&gt;
|-&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/wgPzlokxbXw|300|center}}&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/O_yAdsT8d84|300|center}}&lt;br /&gt;
|-&lt;br /&gt;
! New calibration tools in v0.39&lt;br /&gt;
! Three View Self Calibration&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://www.ninox360.com/calibration-targets 2022-Nov: Create calibration targets in your browser]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://www.ninox360.com/barcode-scanner 2022-Nov: Barcode scanner webapp]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://medium.com/p/35b431fcccf1 2022-Jan: Article on scanning Micro QR Codes]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[[Tutorial_Camera_Calibration|2021-Oct: Camera Calibration Tutorial has been re-written.]]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://youtu.be/RCL5tSt189M 2021-Mar: Stereo Cloud from Mars Perseverance Rover]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:Loose-lips.jpg|125px|link=https://groups.google.com/group/boofcv]] ||&lt;br /&gt;
{| width=&amp;quot;400pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Current Release: &amp;#039;&amp;#039;v0.43&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Date: &amp;#039;&amp;#039;May 15, 2023&amp;#039;&amp;#039; &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://github.com/lessthanoptimal/BoofCV/blob/v0.43/change.txt Change Log]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://youtu.be/BbTPQ9mIoQU Video Summary v0.38]&lt;br /&gt;
|}&lt;br /&gt;
| [[File:Boofcv_bug_propaganda_poster_small.jpg|125px|link=https://github.com/lessthanoptimal/BoofCV/issues]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| width=&amp;quot;600pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; |  [[File:Ninox360_icon_logo_moto.png|400px|link=https://www.ninox360.com]]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | A start up from the creators of BoofCV.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-help-icon.png|100px|link=[[Manual]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Manual]]&lt;br /&gt;
|-&lt;br /&gt;
| [[FAQ | FAQ]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.boofcv.org/javadoc/ JavaDoc]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCV/issues Report Bug]&lt;br /&gt;
|-&lt;br /&gt;
| [https://groups.google.com/group/boofcv Message Board]&lt;br /&gt;
|-&lt;br /&gt;
| [[Papers and Reports| Papers/Reports]]&lt;br /&gt;
|} &lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-binary-icon.png|100px|link=[https://github.com/lessthanoptimal/BoofCV Source Code]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Download|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.youtube.com/user/BoofCV/videos Videos]&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Bounties| Bounties ]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Contributing|Contribute]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCPP BoofCPP]&lt;br /&gt;
|} &lt;br /&gt;
| width&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-graph-icon.png|100px|link=[[Performance:BoofCV]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Performance:BoofCV|Performance]]&lt;br /&gt;
|-&lt;br /&gt;
| [[BoofCV Roadmap | Road Map]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Validation:Algorithms | Validation]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Projects_Using_BoofCV | Users ]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Acknowledgements|Acknowledgements]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;SPAN STYLE=&amp;quot;font-size: 14pt;text-align:center&amp;quot;&amp;gt;Prebuild Stand Alone Applications&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Examples_and_Demonstrations|Examples / Demonstrations]] || Example and demonstration applications&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create QR Code|QR Code Generator]] || Create and print QR Codes&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Square_Binary|Square Fiducials]] || Binary/Image Square Fiducial Generator &lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Calibration_Fiducials|Calibration Targets]] || Calibration Target Generator&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Camera_Calibration|Calibration]] || Camera Calibration Application&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Undistort|Lens Undistortion]] ||  Batch Removal of Lens Distortion&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Downsize|Image Downsize]] ||  Batch Image Down Sampling with minimal aliasing&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
| colspan=5 style=&amp;quot;background-color:#ffffdd;&amp;quot; align=&amp;quot;center&amp;quot; |&lt;br /&gt;
== Capability Summary ==&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Image Processing &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Feature &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Recognition&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Geometric &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Integration&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Image Convolution || [[Example_Convolution|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Image Derivatives || [[Example_Image_Derivative|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Thresholding || [[Example_Thresholding|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Ops || [[Example_Binary_Image|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Space || [[Example_Color_Space|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interpolation || [[Example_Interpolation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Deformation || [[Example_Key_Point_Based_Deformation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Blur || [[Example_Image_Blur|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Enhancement || [[Example_Image_Enhancement|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Noise Removal || [[Example_Wavelet_Noise_Removal|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fourier Transform || [[Example_Discrete_Fourier_Transform|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Wavelet Decomposition || &lt;br /&gt;
|- &lt;br /&gt;
| Discrete Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Float Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Scale Space Image || &lt;br /&gt;
|-&lt;br /&gt;
| Equirectangular || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye Cameras || [[Example_Fisheye_To_Pinhole|Example]]&lt;br /&gt;
|&lt;br /&gt;
|} &lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Black Polygons || [[Example_Detect_Black_Polygons|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Black Ellipses || [[Example_Detect_Black_Ellipses|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interest Points || [[Example_Detect_Interest_Points|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Line Detection || [[Example_Detect_Lines|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Motion Detection || [[Example_Background_Moving_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Contours || [[Example_Binary_Image|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Polygon Fitting || [[Example_Fit_Polygon|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Ellipse Fitting || [[Example_Fit_Ellipse|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Template Matching || [[Example_Template_Matching|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Interest Points || [[Example_Detect_Describe_Interface|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Dense Features || [[Example_Dense_Image_Features|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Point Tracking || [[Example_Track_Point_Features|Example]]&lt;br /&gt;
|-  &lt;br /&gt;
| Non-max Suppression || [[Example_Non_Maximum_Suppression|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Dense Optical Flow || [[Example_Dense_Optical_Flow|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Superpixels || [[Example_Superpixels|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Color Segmentation || [[Example_Color_Segmentation|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Scene Recognition || [[Example_Scene_Recognition|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Image Lookup || [[Example_Color_Histogram_Lookup|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| KNN Classifier || [[Example_Scene_Classification|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| CNN Classifiers || [[Example_Image_Classification|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Object Tracking || [[Example_Tracker_Object|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fiducials || [[Tutorial_Fiducials|Tutorial]]&lt;br /&gt;
|-&lt;br /&gt;
| QR Codes || [[Tutorial_QRCodes|Tutorial]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| SFM || [[Tutorial_Geometric_Vision|Tutorial]] &lt;br /&gt;
|- &lt;br /&gt;
| Camera Calibration || [[Tutorial_Camera_Calibration|Tutorial]]&lt;br /&gt;
|- &lt;br /&gt;
| Mono Calibration || [[Example_Calibrate_Planar_Mono|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Fisheye Calibration || [[Example_Calibrate_Planar_Fisheye|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Stereo Calibration || [[Example_Calibrate_Planar_Stereo|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Remove Distortion || [[Example_Remove_Lens_Distortion|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Equi to Pinhole || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye to Equi|| [[Example_Fisheye_To_Equirectangular|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Bundle Adjustment || [[Example Sparse Bundle Adjustment|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| 3D Stereo Cloud || [[Example_Stereo_Disparity_3D|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Monocular Stereo || [[Example_Stereo_Single_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Uncalibrated Stereo || [[Example_Three_View_Stereo_Uncalibrated|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Multi Baseline Stereo || [[Example_Multi_Baseline_Stereo|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Scene Reconstruction || [[Example_Multiview_Reconstruction_Dense|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Video Stabilization || [[Example_Video_Stabilization|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Video Mosaic || [[Example_Video_Mosaic|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Stereo || [[Example_Stereo_Visual_Odometry|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Mono Plane || [[Example_Visual_Odometry_Monocular_Plane|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: RGB-D || [[Example_Visual_Odometry_Depth|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
| Visualization&lt;br /&gt;
|-&lt;br /&gt;
| [[Android_support|Android]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Videos and Webcams|Video]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Kinect|Kinect]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Processing|Processing]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/PyBoof Python]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Download&amp;diff=3256</id>
		<title>Download</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Download&amp;diff=3256"/>
		<updated>2023-02-20T17:22:58Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BoofCV is available from its central repository at Github or through periodic releases.  Below are links to the latest stable release hosted on SourceForge.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Latest Stable Release:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* [https://sourceforge.net/projects/boofcv/files/v0.42/ Jars and Source Code]&lt;br /&gt;
* [https://github.com/lessthanoptimal/BoofCV/blob/v0.42/change.txt Change Log]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Pre-Built Applications:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* [[Applications#Examples_and_Demonstrations| Examples and Demonstrations ]]&lt;br /&gt;
&lt;br /&gt;
If you encounter any problems getting BoofCV up and running, please let us know!  A bug might have slipped through testing or if the instructions are not clear we would like to know.&lt;br /&gt;
&lt;br /&gt;
= Java Version =&lt;br /&gt;
&lt;br /&gt;
To run BoofCV requires Java 11 and above. Building BoofCV requires Java 17, but if you use the build in Gradle script that is handled for you.&lt;br /&gt;
&lt;br /&gt;
Where to download the Java Virtual Machine&lt;br /&gt;
* https://www.azul.com/downloads/zulu/&lt;br /&gt;
* https://adoptopenjdk.net/&lt;br /&gt;
&lt;br /&gt;
NOTE: Version 0.39 and before maintained compatibility with Java 8. &lt;br /&gt;
&lt;br /&gt;
= Maven Central =&lt;br /&gt;
The easiest way to use boofcv is to reference its jars on [https://search.maven.org/search?q=g:org.boofcv Maven Central].  See below for Maven and Gradle code.  BoofCV is broken up into many modules.  To make it easier to use BoofCV all of its core functionality can be referenced using the &amp;#039;all&amp;#039; module.  Individual modules in &amp;quot;integration&amp;quot; still must be referenced individually.&lt;br /&gt;
&lt;br /&gt;
Artifact List&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-core&amp;#039;&amp;#039; : All the core functionality of BoofCV.&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-all&amp;#039;&amp;#039; : All the core and integration packages in BoofCV. This can be very large. You probably want core!&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-android&amp;#039;&amp;#039; : [http://developer.android.com/index.html Android] support &lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-WebcamCapture&amp;#039;&amp;#039; : [http://webcam-capture.sarxos.pl/ Webcam Capture support]&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-javacv&amp;#039;&amp;#039; : [https://github.com/bytedeco/javacv JavaCV] (Reading OpenCV files)&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-ffmpeg&amp;#039;&amp;#039; : [https://github.com/bytedeco/javacpp-presets javacpp-presets] Reading videos&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-swing&amp;#039;&amp;#039; : Visualization using Java Swing&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-jcodec&amp;#039;&amp;#039; : [http://jcodec.org/ jcodec] Pure Java (and buggy) library for reading videos.&lt;br /&gt;
&lt;br /&gt;
== Gradle Dependencies ==&lt;br /&gt;
&lt;br /&gt;
Here are some examples for how to add BoofCV to your Gradle project. You will need to replace $VERSION with the latest version of BoofCV, e.g. 0.42. If you just want image processing, with very few external dependencies, just include the following in your Gradle script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
api(&amp;quot;org.boofcv:boofcv-core:$VERSION&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
It is possible to include only the modules inside of core that you need. While not difficult, you will need to learn more about how BoofCV is structured.&lt;br /&gt;
&lt;br /&gt;
Since this does not include GUI or Webcam code most of the examples will not run! Here&amp;#039;s how you can add them:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&amp;#039;boofcv-core&amp;#039;,&amp;#039;boofcv-swing&amp;#039;,&amp;#039;boofcv-WebcamCapture&amp;#039;,&amp;#039;demonstrations&amp;#039;].each&lt;br /&gt;
    { String a -&amp;gt; compile group: &amp;#039;org.boofcv&amp;#039;, name: a, version: VERSION }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Deep Learning does add some external dependencies that most people don&amp;#039;t need. In the future that might become an optional dependency. For now look at [[Optimizing BoofCV]] for more complex ways to reduce the jar size.&lt;br /&gt;
&lt;br /&gt;
= Bleeding Edge = &lt;br /&gt;
&lt;br /&gt;
The absolutely latest code is available on Github. This code should be considered developmental and may or may not work. Please follow build instructions included in the [https://github.com/lessthanoptimal/BoofCV#building-from-source README.MD] as those will be up to date. There is also a (slightly) out of date [https://youtu.be/qMTtdiujAtQ?t=67 YouTube Video].&lt;br /&gt;
&lt;br /&gt;
= Past Releases =&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; width=600px cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
! Version !! Link !! Description &lt;br /&gt;
|-&lt;br /&gt;
| v0.42 || [https://sourceforge.net/projects/boofcv/files/v0.42 Link] || Bug fixes, new filters, OBJ support&lt;br /&gt;
|-&lt;br /&gt;
| v0.41 || [https://sourceforge.net/projects/boofcv/files/v0.41 Link] || Aztec Code, Android cameras, multi camera calibration, mesh&lt;br /&gt;
|-&lt;br /&gt;
| v0.40.1 || [https://sourceforge.net/projects/boofcv/files/v0.40 Link] || Micro QR Code and strict null enforcement&lt;br /&gt;
|-&lt;br /&gt;
| v0.39.1 || [https://sourceforge.net/projects/boofcv/files/v0.39.1 Link] || Markers (ECoCheck, AruCo), Calibration Apps, Simulation&lt;br /&gt;
|-&lt;br /&gt;
| v0.38 || [https://sourceforge.net/projects/boofcv/files/v0.38 Link] || Better MVS and Scene Recognition&lt;br /&gt;
|-&lt;br /&gt;
| v0.37 || [https://sourceforge.net/projects/boofcv/files/v0.37 Link] || Mutli-View Stereo&lt;br /&gt;
|-&lt;br /&gt;
| v0.36 || [https://sourceforge.net/projects/boofcv/files/v0.36 Link] || Random dot markers, SBA in Visual odometry, visualization&lt;br /&gt;
|-&lt;br /&gt;
| v0.35 || [https://sourceforge.net/projects/boofcv/files/v0.35 Link] || Even better Chessboard, stereo, various&lt;br /&gt;
|-&lt;br /&gt;
| v0.34 || [https://sourceforge.net/projects/boofcv/files/v0.34 Link] || More Concurrency, Chessboard, Lines&lt;br /&gt;
|-&lt;br /&gt;
| v0.33 || [https://sourceforge.net/projects/boofcv/files/v0.33.1 Link] || Concurrency, SFM, QR Fixes&lt;br /&gt;
|-&lt;br /&gt;
| v0.32 || [https://sourceforge.net/projects/boofcv/files/v0.32 Link] || Uncalibrated Stereo&lt;br /&gt;
|-&lt;br /&gt;
| v0.31 || [https://sourceforge.net/projects/boofcv/files/v0.31 Link] || Sparse Bundle Adjustment&lt;br /&gt;
|-&lt;br /&gt;
| v0.30 || [https://sourceforge.net/projects/boofcv/files/v0.30 Link] || Android and SFM&lt;br /&gt;
|-&lt;br /&gt;
| v0.29 || [https://sourceforge.net/projects/boofcv/files/v0.29 Link] || BOverride, Background GMM, GVersion&lt;br /&gt;
|-&lt;br /&gt;
| v0.28 || [https://sourceforge.net/projects/boofcv/files/v0.28 Link] || Fisheye calibration, Hex target, QR Code, polyline&lt;br /&gt;
|-&lt;br /&gt;
| v0.27 || [https://sourceforge.net/projects/boofcv/files/v0.27 Link] || Module name changes, new calib target, new distortion&lt;br /&gt;
|-&lt;br /&gt;
| v0.26 || [https://sourceforge.net/projects/boofcv/files/v0.26 Link] || Critical bug fixes, more examples, improved asymmetric grid&lt;br /&gt;
|-&lt;br /&gt;
| v0.25 || [https://sourceforge.net/projects/boofcv/files/v0.25 Link] || 360 and fisheye support, Deep Learning, circle asym grid, ... etc&lt;br /&gt;
|-&lt;br /&gt;
| v0.24.1 || [https://sourceforge.net/projects/boofcv/files/v0.24.1 Link] || Fixed dependency on a SNAPSHOT &lt;br /&gt;
|-&lt;br /&gt;
| v0.24 || [https://sourceforge.net/projects/boofcv/files/v0.24 Link] || Replaced Xuggler with JavaCV&lt;br /&gt;
|-&lt;br /&gt;
| v0.23 || [https://sourceforge.net/projects/boofcv/files/v0.23 Link] || Refactoring of image names&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Main_Page&amp;diff=3255</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Main_Page&amp;diff=3255"/>
		<updated>2023-02-20T17:20:34Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&lt;br /&gt;
[[File:Boofcv_logo_circles_frontpage.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
BoofCV is an open source library written from scratch for real-time computer vision. Its functionality covers a range of subjects, low-level image processing, camera calibration, feature detection/tracking, structure-from-motion, fiducial detection, and recognition. BoofCV has been released under an Apache  2.0 license for both academic and commercial use.&lt;br /&gt;
&lt;br /&gt;
BoofCV is organized into several packages: &amp;#039;&amp;#039;image processing&amp;#039;&amp;#039;, &amp;#039;&amp;#039;features&amp;#039;&amp;#039;, &amp;#039;&amp;#039;geometric vision&amp;#039;&amp;#039;, &amp;#039;&amp;#039;calibration&amp;#039;&amp;#039;, &amp;#039;&amp;#039;recognition&amp;#039;&amp;#039;,&amp;#039;&amp;#039;visualize&amp;#039;&amp;#039;, and &amp;#039;&amp;#039;IO&amp;#039;&amp;#039;.  &amp;#039;&amp;#039;Image processing&amp;#039;&amp;#039; contains commonly used image processing functions which operate directly on pixels.  &amp;#039;&amp;#039;Features&amp;#039;&amp;#039; contains feature extraction algorithms for use in higher level operations.  &amp;#039;&amp;#039;Calibration&amp;#039;&amp;#039; has routines for determining the camera&amp;#039;s intrinsic and extrinsic parameters.  &amp;#039;&amp;#039;Recognition&amp;#039;&amp;#039; is for recognition and tracking complex visual objects.  &amp;#039;&amp;#039;Geometric vision&amp;#039;&amp;#039; is composed of routines for processing extracted image features using 2D and 3D geometry. &amp;#039;&amp;#039;Visualize&amp;#039;&amp;#039; has routines for rendering and displaying extracted features.  &amp;#039;&amp;#039;IO&amp;#039;&amp;#039; has input and output routines for different data structures.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| &lt;br /&gt;
|-&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/wgPzlokxbXw|300|center}}&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/O_yAdsT8d84|300|center}}&lt;br /&gt;
|-&lt;br /&gt;
! New calibration tools in v0.39&lt;br /&gt;
! Three View Self Calibration&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://www.ninox360.com/calibration-targets 2022-Nov: Create calibration targets in your browser]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://www.ninox360.com/barcode-scanner 2022-Nov: Barcode scanner webapp]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://medium.com/p/35b431fcccf1 2022-Jan: Article on scanning Micro QR Codes]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[[Tutorial_Camera_Calibration|2021-Oct: Camera Calibration Tutorial has been re-written.]]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://youtu.be/RCL5tSt189M 2021-Mar: Stereo Cloud from Mars Perseverance Rover]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:Loose-lips.jpg|125px|link=https://groups.google.com/group/boofcv]] ||&lt;br /&gt;
{| width=&amp;quot;400pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Current Release: &amp;#039;&amp;#039;v0.42&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Date: &amp;#039;&amp;#039;February 20, 2023&amp;#039;&amp;#039; &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://github.com/lessthanoptimal/BoofCV/blob/v0.42/change.txt Change Log]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://youtu.be/BbTPQ9mIoQU Video Summary v0.38]&lt;br /&gt;
|}&lt;br /&gt;
| [[File:Boofcv_bug_propaganda_poster_small.jpg|125px|link=https://github.com/lessthanoptimal/BoofCV/issues]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| width=&amp;quot;600pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; |  [[File:Ninox360_icon_logo_moto.png|400px|link=https://www.ninox360.com]]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | A start up from the creators of BoofCV.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-help-icon.png|100px|link=[[Manual]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Manual]]&lt;br /&gt;
|-&lt;br /&gt;
| [[FAQ | FAQ]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.boofcv.org/javadoc/ JavaDoc]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCV/issues Report Bug]&lt;br /&gt;
|-&lt;br /&gt;
| [https://groups.google.com/group/boofcv Message Board]&lt;br /&gt;
|-&lt;br /&gt;
| [[Papers and Reports| Papers/Reports]]&lt;br /&gt;
|} &lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-binary-icon.png|100px|link=[https://github.com/lessthanoptimal/BoofCV Source Code]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Download|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.youtube.com/user/BoofCV/videos Videos]&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Bounties| Bounties ]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Contributing|Contribute]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCPP BoofCPP]&lt;br /&gt;
|} &lt;br /&gt;
| width&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-graph-icon.png|100px|link=[[Performance:BoofCV]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Performance:BoofCV|Performance]]&lt;br /&gt;
|-&lt;br /&gt;
| [[BoofCV Roadmap | Road Map]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Validation:Algorithms | Validation]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Projects_Using_BoofCV | Users ]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Acknowledgements|Acknowledgements]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;SPAN STYLE=&amp;quot;font-size: 14pt;text-align:center&amp;quot;&amp;gt;Prebuild Stand Alone Applications&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Examples_and_Demonstrations|Examples / Demonstrations]] || Example and demonstration applications&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create QR Code|QR Code Generator]] || Create and print QR Codes&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Square_Binary|Square Fiducials]] || Binary/Image Square Fiducial Generator &lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Calibration_Fiducials|Calibration Targets]] || Calibration Target Generator&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Camera_Calibration|Calibration]] || Camera Calibration Application&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Undistort|Lens Undistortion]] ||  Batch Removal of Lens Distortion&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Downsize|Image Downsize]] ||  Batch Image Down Sampling with minimal aliasing&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
| colspan=5 style=&amp;quot;background-color:#ffffdd;&amp;quot; align=&amp;quot;center&amp;quot; |&lt;br /&gt;
== Capability Summary ==&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Image Processing &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Feature &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Recognition&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Geometric &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Integration&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Image Convolution || [[Example_Convolution|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Image Derivatives || [[Example_Image_Derivative|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Thresholding || [[Example_Thresholding|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Ops || [[Example_Binary_Image|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Space || [[Example_Color_Space|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interpolation || [[Example_Interpolation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Deformation || [[Example_Key_Point_Based_Deformation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Blur || [[Example_Image_Blur|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Enhancement || [[Example_Image_Enhancement|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Noise Removal || [[Example_Wavelet_Noise_Removal|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fourier Transform || [[Example_Discrete_Fourier_Transform|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Wavelet Decomposition || &lt;br /&gt;
|- &lt;br /&gt;
| Discrete Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Float Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Scale Space Image || &lt;br /&gt;
|-&lt;br /&gt;
| Equirectangular || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye Cameras || [[Example_Fisheye_To_Pinhole|Example]]&lt;br /&gt;
|&lt;br /&gt;
|} &lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Black Polygons || [[Example_Detect_Black_Polygons|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Black Ellipses || [[Example_Detect_Black_Ellipses|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interest Points || [[Example_Detect_Interest_Points|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Line Detection || [[Example_Detect_Lines|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Motion Detection || [[Example_Background_Moving_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Contours || [[Example_Binary_Image|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Polygon Fitting || [[Example_Fit_Polygon|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Ellipse Fitting || [[Example_Fit_Ellipse|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Template Matching || [[Example_Template_Matching|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Interest Points || [[Example_Detect_Describe_Interface|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Dense Features || [[Example_Dense_Image_Features|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Point Tracking || [[Example_Track_Point_Features|Example]]&lt;br /&gt;
|-  &lt;br /&gt;
| Non-max Suppression || [[Example_Non_Maximum_Suppression|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Dense Optical Flow || [[Example_Dense_Optical_Flow|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Superpixels || [[Example_Superpixels|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Color Segmentation || [[Example_Color_Segmentation|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Scene Recognition || [[Example_Scene_Recognition|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Image Lookup || [[Example_Color_Histogram_Lookup|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| KNN Classifier || [[Example_Scene_Classification|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| CNN Classifiers || [[Example_Image_Classification|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Object Tracking || [[Example_Tracker_Object|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fiducials || [[Tutorial_Fiducials|Tutorial]]&lt;br /&gt;
|-&lt;br /&gt;
| QR Codes || [[Tutorial_QRCodes|Tutorial]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| SFM || [[Tutorial_Geometric_Vision|Tutorial]] &lt;br /&gt;
|- &lt;br /&gt;
| Camera Calibration || [[Tutorial_Camera_Calibration|Tutorial]]&lt;br /&gt;
|- &lt;br /&gt;
| Mono Calibration || [[Example_Calibrate_Planar_Mono|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Fisheye Calibration || [[Example_Calibrate_Planar_Fisheye|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Stereo Calibration || [[Example_Calibrate_Planar_Stereo|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Remove Distortion || [[Example_Remove_Lens_Distortion|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Equi to Pinhole || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye to Equi|| [[Example_Fisheye_To_Equirectangular|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Bundle Adjustment || [[Example Sparse Bundle Adjustment|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| 3D Stereo Cloud || [[Example_Stereo_Disparity_3D|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Monocular Stereo || [[Example_Stereo_Single_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Uncalibrated Stereo || [[Example_Three_View_Stereo_Uncalibrated|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Multi Baseline Stereo || [[Example_Multi_Baseline_Stereo|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Scene Reconstruction || [[Example_Multiview_Reconstruction_Dense|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Video Stabilization || [[Example_Video_Stabilization|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Video Mosaic || [[Example_Video_Mosaic|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Stereo || [[Example_Stereo_Visual_Odometry|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Mono Plane || [[Example_Visual_Odometry_Monocular_Plane|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: RGB-D || [[Example_Visual_Odometry_Depth|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
| Visualization&lt;br /&gt;
|-&lt;br /&gt;
| [[Android_support|Android]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Videos and Webcams|Video]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Kinect|Kinect]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Processing|Processing]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/PyBoof Python]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Example_Detect_QR_Code&amp;diff=3254</id>
		<title>Example Detect QR Code</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Example_Detect_QR_Code&amp;diff=3254"/>
		<updated>2022-11-10T16:50:08Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;gallery widths=807px heights=331px&amp;gt;&lt;br /&gt;
file:Example_qrcode_detection.jpg | Several QR Codes are detected in this image. Correctly decoded ones are highlighted in green and failures in red. Graph of connected position patterns is also shown.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/QR_code QR Codes] are found on many consumer products and often encode information such as a website. BoofCV provides a QR Code detector is designed to be fast on large images, detect small markers in large images, and be rotation invariant. It also provides much more internal information on the QR codes than other popular detectors. It even returns the rejected markers.&lt;br /&gt;
&lt;br /&gt;
Example Code:&lt;br /&gt;
* [https://github.com/lessthanoptimal/BoofCV/blob/v0.40/examples/src/main/java/boofcv/examples/fiducial/ExampleDetectQrCode.java ExampleDetectQrCode.java]&lt;br /&gt;
&lt;br /&gt;
Concepts:&lt;br /&gt;
* Fiducials&lt;br /&gt;
* QR Codes&lt;br /&gt;
&lt;br /&gt;
Relevant Videos:&lt;br /&gt;
* [https://youtu.be/TGg-xgTyaU8?t=272 Youtube Demo]&lt;br /&gt;
&lt;br /&gt;
Relevant Examples/Tutorials:&lt;br /&gt;
* [https://www.ninox360.com/barcode-scanner 2D Barcode Webapp]&lt;br /&gt;
* [[Tutorial_QRCodes|Tutorial QR Codes]]&lt;br /&gt;
* [[Example_Render_QR_Code|Rendering QR Codes]]&lt;br /&gt;
* [[Performance:QrCode|QR Code Performance Study]]&lt;br /&gt;
* [[Example_Detect_Micro_QR_Code|Micro QR Code]]&lt;br /&gt;
&lt;br /&gt;
= Example Code =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Shows you how to detect a QR Code inside an image and process the extracted data. Much of the information that&lt;br /&gt;
 * is computed while detecting and decoding a QR Code is saved inside the {@link QrCode} class. This can be useful&lt;br /&gt;
 * for application developers.&lt;br /&gt;
 *&lt;br /&gt;
 * @author Peter Abeles&lt;br /&gt;
 */&lt;br /&gt;
public class ExampleDetectQrCode {&lt;br /&gt;
	public static void main( String[] args ) {&lt;br /&gt;
		BufferedImage input = UtilImageIO.loadImageNotNull(UtilIO.pathExample(&amp;quot;fiducial/qrcode/image01.jpg&amp;quot;));&lt;br /&gt;
		GrayU8 gray = ConvertBufferedImage.convertFrom(input, (GrayU8)null);&lt;br /&gt;
&lt;br /&gt;
		var config = new ConfigQrCode();&lt;br /&gt;
//		config.considerTransposed = false; // by default, it will consider incorrectly encoded markers. Faster if false&lt;br /&gt;
		QrCodeDetector&amp;lt;GrayU8&amp;gt; detector = FactoryFiducial.qrcode(config, GrayU8.class);&lt;br /&gt;
&lt;br /&gt;
		detector.process(gray);&lt;br /&gt;
&lt;br /&gt;
		// Gets a list of all the qr codes it could successfully detect and decode&lt;br /&gt;
		List&amp;lt;QrCode&amp;gt; detections = detector.getDetections();&lt;br /&gt;
&lt;br /&gt;
		Graphics2D g2 = input.createGraphics();&lt;br /&gt;
		int strokeWidth = Math.max(4, input.getWidth()/200); // in large images the line can be too thin&lt;br /&gt;
		g2.setColor(Color.GREEN);&lt;br /&gt;
		g2.setStroke(new BasicStroke(strokeWidth));&lt;br /&gt;
		for (QrCode qr : detections) {&lt;br /&gt;
			// The message encoded in the marker&lt;br /&gt;
			System.out.println(&amp;quot;message: &amp;#039;&amp;quot; + qr.message + &amp;quot;&amp;#039;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
			// Visualize its location in the image&lt;br /&gt;
			VisualizeShapes.drawPolygon(qr.bounds, true, 1, g2);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// List of objects it thinks might be a QR Code but failed for various reasons&lt;br /&gt;
		List&amp;lt;QrCode&amp;gt; failures = detector.getFailures();&lt;br /&gt;
		g2.setColor(Color.RED);&lt;br /&gt;
		for (QrCode qr : failures) {&lt;br /&gt;
			// If the &amp;#039;cause&amp;#039; is ERROR_CORRECTION or higher, then there&amp;#039;s a decent chance it&amp;#039;s a real marker&lt;br /&gt;
			if (qr.failureCause.ordinal() &amp;lt; QrCode.Failure.ERROR_CORRECTION.ordinal())&lt;br /&gt;
				continue;&lt;br /&gt;
&lt;br /&gt;
			VisualizeShapes.drawPolygon(qr.bounds, true, 1, g2);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		ShowImages.showWindow(input, &amp;quot;Example QR Codes&amp;quot;, true);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Example_Detect_Micro_QR_Code&amp;diff=3253</id>
		<title>Example Detect Micro QR Code</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Example_Detect_Micro_QR_Code&amp;diff=3253"/>
		<updated>2022-11-10T16:49:50Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;gallery widths=807px heights=331px&amp;gt;&lt;br /&gt;
File:Example_micro_qr.jpg | Micro QR Code markers with various sizes are detected and outlined in red.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/QR_code#Micro_QR_code Micro QR Codes] are designed to be smaller and more space efficient than regular QR codes. They are not as compact as Datamatrix, but have an easier to identify locator pattern making them more appropriate in complex scenes.&lt;br /&gt;
&lt;br /&gt;
Example Code:&lt;br /&gt;
* [https://github.com/lessthanoptimal/BoofCV/blob/v0.40/examples/src/main/java/boofcv/examples/fiducial/ExampleDetectMicroQrCode.java ExampleDetectMicroQrCode.java]&lt;br /&gt;
&lt;br /&gt;
Concepts:&lt;br /&gt;
* Fiducials&lt;br /&gt;
* QR Codes&lt;br /&gt;
&lt;br /&gt;
Relevant Examples/Tutorials:&lt;br /&gt;
* [https://www.ninox360.com/barcode-scanner 2D Barcode Webapp]&lt;br /&gt;
* [[Tutorial_QRCodes|Tutorial QR Codes]]&lt;br /&gt;
* [[Example_Render_Micro_QR_Code|Rendering Micro QR Codes]]&lt;br /&gt;
* [[Example_Detect_QR_Code|QR Codes]]&lt;br /&gt;
&lt;br /&gt;
= Example Code =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Shows you how to detect a Micro QR Code inside an image and process the extracted data. Much of the information that&lt;br /&gt;
 * is computed while detecting and decoding a QR Code is saved inside the {@link MicroQrCode} class. This can be useful&lt;br /&gt;
 * for application developers.&lt;br /&gt;
 *&lt;br /&gt;
 * @author Peter Abeles&lt;br /&gt;
 */&lt;br /&gt;
public class ExampleDetectMicroQrCode {&lt;br /&gt;
	public static void main( String[] args ) {&lt;br /&gt;
		BufferedImage input = UtilImageIO.loadImageNotNull(UtilIO.pathExample(&amp;quot;fiducial/microqr/image01.jpg&amp;quot;));&lt;br /&gt;
		GrayU8 gray = ConvertBufferedImage.convertFrom(input, (GrayU8)null);&lt;br /&gt;
&lt;br /&gt;
		var config = new ConfigMicroQrCode();&lt;br /&gt;
//		config.considerTransposed = false; // by default, it will consider incorrectly encoded markers. Faster if false&lt;br /&gt;
		MicroQrCodeDetector&amp;lt;GrayU8&amp;gt; detector = FactoryFiducial.microqr(config, GrayU8.class);&lt;br /&gt;
&lt;br /&gt;
		detector.process(gray);&lt;br /&gt;
&lt;br /&gt;
		// Gets a list of all the qr codes it could successfully detect and decode&lt;br /&gt;
		List&amp;lt;MicroQrCode&amp;gt; detections = detector.getDetections();&lt;br /&gt;
&lt;br /&gt;
		Graphics2D g2 = input.createGraphics();&lt;br /&gt;
		int strokeWidth = Math.max(4, input.getWidth()/200); // in large images the line can be too thin&lt;br /&gt;
		g2.setColor(Color.GREEN);&lt;br /&gt;
		g2.setStroke(new BasicStroke(strokeWidth));&lt;br /&gt;
		for (MicroQrCode qr : detections) {&lt;br /&gt;
			// The message encoded in the marker&lt;br /&gt;
			System.out.println(&amp;quot;message: &amp;#039;&amp;quot; + qr.message + &amp;quot;&amp;#039;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
			// Visualize its location in the image&lt;br /&gt;
			VisualizeShapes.drawPolygon(qr.bounds, true, 1, g2);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// List of objects it thinks might be a QR Code but failed for various reasons&lt;br /&gt;
		List&amp;lt;MicroQrCode&amp;gt; failures = detector.getFailures();&lt;br /&gt;
		g2.setColor(Color.RED);&lt;br /&gt;
		for (MicroQrCode qr : failures) {&lt;br /&gt;
			// If the &amp;#039;cause&amp;#039; is ERROR_CORRECTION or later it might a real QR Code&lt;br /&gt;
			if (qr.failureCause.ordinal() &amp;lt; QrCode.Failure.ERROR_CORRECTION.ordinal())&lt;br /&gt;
				continue;&lt;br /&gt;
&lt;br /&gt;
			VisualizeShapes.drawPolygon(qr.bounds, true, 1, g2);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		ShowImages.showWindow(input, &amp;quot;Example Micro QR Codes&amp;quot;, true);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Example_Detect_Aztec_Code&amp;diff=3252</id>
		<title>Example Detect Aztec Code</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Example_Detect_Aztec_Code&amp;diff=3252"/>
		<updated>2022-11-10T16:49:33Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;gallery widths=350px heights=350px&amp;gt;&lt;br /&gt;
File:Example_aztec_code_scan.jpg | Aztec Code marker detected on a ticket.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/Aztec_Code Aztec Codes] are popular in transportation and related industries. They can encode a lot of information and don&amp;#039;t require a quite zone around the marker. However, due to the lack of easily identified landmarks, larger markers are harder to scan.&lt;br /&gt;
&lt;br /&gt;
Example Code:&lt;br /&gt;
* [https://github.com/lessthanoptimal/BoofCV/blob/v0.41/examples/src/main/java/boofcv/examples/fiducial/ExampleDetectAztecCode.java ExampleDetectAztecCode]&lt;br /&gt;
&lt;br /&gt;
Concepts:&lt;br /&gt;
* Fiducials&lt;br /&gt;
* QR Codes&lt;br /&gt;
&lt;br /&gt;
Relevant Examples/Tutorials:&lt;br /&gt;
* [https://www.ninox360.com/barcode-scanner 2D Barcode Webapp]&lt;br /&gt;
* [[Example_Render_Aztec_Code|Rendering Aztec Codes]]&lt;br /&gt;
* [[Example_Detect_QR_Code|QR Codes]]&lt;br /&gt;
* [[Example_Detect_Micro_QR_Code|Micro QR Codes]]&lt;br /&gt;
&lt;br /&gt;
= Example Code =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Shows you how to detect an Aztec Code inside an image. BoofCV provides a lot of information about the marker and&lt;br /&gt;
 * provides an accurate location of the finder pattern. For example, you can get the number of bit errors which&lt;br /&gt;
 * were encountered while reading and will return failed detections with the reason they failed.&lt;br /&gt;
 *&lt;br /&gt;
 * @author Peter Abeles&lt;br /&gt;
 */&lt;br /&gt;
public class ExampleDetectAztecCode {&lt;br /&gt;
	public static void main( String[] args ) {&lt;br /&gt;
		BufferedImage input = UtilImageIO.loadImageNotNull(UtilIO.pathExample(&amp;quot;fiducial/aztec/image01.jpg&amp;quot;));&lt;br /&gt;
		GrayU8 gray = ConvertBufferedImage.convertFrom(input, (GrayU8)null);&lt;br /&gt;
&lt;br /&gt;
		var config = new ConfigAztecCode();&lt;br /&gt;
//		config.considerTransposed = false; // by default, it will consider incorrectly encoded markers. Faster if false&lt;br /&gt;
		AztecCodePreciseDetector&amp;lt;GrayU8&amp;gt; detector = FactoryFiducial.aztec(config, GrayU8.class);&lt;br /&gt;
&lt;br /&gt;
		detector.process(gray);&lt;br /&gt;
&lt;br /&gt;
		// Gets a list of all the qr codes it could successfully detect and decode&lt;br /&gt;
		List&amp;lt;AztecCode&amp;gt; detections = detector.getDetections();&lt;br /&gt;
&lt;br /&gt;
		// Print the encoded messages&lt;br /&gt;
		for (AztecCode marker : detections) {&lt;br /&gt;
			System.out.println(&amp;quot;message: &amp;#039;&amp;quot; + marker.message + &amp;quot;&amp;#039;&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// Visualize the found markers in the image&lt;br /&gt;
		Graphics2D g2 = input.createGraphics();&lt;br /&gt;
		int strokeWidth = Math.max(4, input.getWidth()/200); // in large images the line can be too thin&lt;br /&gt;
		g2.setColor(Color.GREEN);&lt;br /&gt;
		g2.setStroke(new BasicStroke(strokeWidth));&lt;br /&gt;
		for (AztecCode marker : detections) {&lt;br /&gt;
			VisualizeShapes.drawPolygon(marker.bounds, true, 1, g2);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// List of objects it thinks might be a QR Code but failed for various reasons&lt;br /&gt;
		List&amp;lt;AztecCode&amp;gt; failures = detector.getFailures();&lt;br /&gt;
		g2.setColor(Color.RED);&lt;br /&gt;
		for (AztecCode marker : failures) {&lt;br /&gt;
			// If it failed to decode the mode then there&amp;#039;s a decent change of it being a false negative&lt;br /&gt;
			if (marker.failure.ordinal() &amp;lt; AztecCode.Failure.MODE_ECC.ordinal())&lt;br /&gt;
				continue;&lt;br /&gt;
&lt;br /&gt;
			VisualizeShapes.drawPolygon(marker.bounds, true, 1, g2);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		ShowImages.showWindow(input, &amp;quot;Example Aztec Codes&amp;quot;, true);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Main_Page&amp;diff=3251</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Main_Page&amp;diff=3251"/>
		<updated>2022-11-10T16:43:07Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&lt;br /&gt;
[[File:Boofcv_logo_circles_frontpage.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
BoofCV is an open source library written from scratch for real-time computer vision. Its functionality covers a range of subjects, low-level image processing, camera calibration, feature detection/tracking, structure-from-motion, fiducial detection, and recognition. BoofCV has been released under an Apache  2.0 license for both academic and commercial use.&lt;br /&gt;
&lt;br /&gt;
BoofCV is organized into several packages: &amp;#039;&amp;#039;image processing&amp;#039;&amp;#039;, &amp;#039;&amp;#039;features&amp;#039;&amp;#039;, &amp;#039;&amp;#039;geometric vision&amp;#039;&amp;#039;, &amp;#039;&amp;#039;calibration&amp;#039;&amp;#039;, &amp;#039;&amp;#039;recognition&amp;#039;&amp;#039;,&amp;#039;&amp;#039;visualize&amp;#039;&amp;#039;, and &amp;#039;&amp;#039;IO&amp;#039;&amp;#039;.  &amp;#039;&amp;#039;Image processing&amp;#039;&amp;#039; contains commonly used image processing functions which operate directly on pixels.  &amp;#039;&amp;#039;Features&amp;#039;&amp;#039; contains feature extraction algorithms for use in higher level operations.  &amp;#039;&amp;#039;Calibration&amp;#039;&amp;#039; has routines for determining the camera&amp;#039;s intrinsic and extrinsic parameters.  &amp;#039;&amp;#039;Recognition&amp;#039;&amp;#039; is for recognition and tracking complex visual objects.  &amp;#039;&amp;#039;Geometric vision&amp;#039;&amp;#039; is composed of routines for processing extracted image features using 2D and 3D geometry. &amp;#039;&amp;#039;Visualize&amp;#039;&amp;#039; has routines for rendering and displaying extracted features.  &amp;#039;&amp;#039;IO&amp;#039;&amp;#039; has input and output routines for different data structures.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| &lt;br /&gt;
|-&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/wgPzlokxbXw|300|center}}&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/O_yAdsT8d84|300|center}}&lt;br /&gt;
|-&lt;br /&gt;
! New calibration tools in v0.39&lt;br /&gt;
! Three View Self Calibration&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://www.ninox360.com/calibration-targets 2022-Nov: Create calibration targets in your browser]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://www.ninox360.com/barcode-scanner 2022-Nov: Barcode scanner webapp]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://medium.com/p/35b431fcccf1 2022-Jan: Article on scanning Micro QR Codes]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[[Tutorial_Camera_Calibration|2021-Oct: Camera Calibration Tutorial has been re-written.]]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://youtu.be/RCL5tSt189M 2021-Mar: Stereo Cloud from Mars Perseverance Rover]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:Loose-lips.jpg|125px|link=https://groups.google.com/group/boofcv]] ||&lt;br /&gt;
{| width=&amp;quot;400pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Current Release: &amp;#039;&amp;#039;v0.41&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Date: &amp;#039;&amp;#039;September 2, 2022&amp;#039;&amp;#039; &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://github.com/lessthanoptimal/BoofCV/blob/v0.41/change.txt Change Log]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://youtu.be/BbTPQ9mIoQU Video Summary v0.38]&lt;br /&gt;
|}&lt;br /&gt;
| [[File:Boofcv_bug_propaganda_poster_small.jpg|125px|link=https://github.com/lessthanoptimal/BoofCV/issues]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| width=&amp;quot;600pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; |  [[File:Ninox360_icon_logo_moto.png|400px|link=https://www.ninox360.com]]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | A start up from the creators of BoofCV.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-help-icon.png|100px|link=[[Manual]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Manual]]&lt;br /&gt;
|-&lt;br /&gt;
| [[FAQ | FAQ]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.boofcv.org/javadoc/ JavaDoc]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCV/issues Report Bug]&lt;br /&gt;
|-&lt;br /&gt;
| [https://groups.google.com/group/boofcv Message Board]&lt;br /&gt;
|-&lt;br /&gt;
| [[Papers and Reports| Papers/Reports]]&lt;br /&gt;
|} &lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-binary-icon.png|100px|link=[https://github.com/lessthanoptimal/BoofCV Source Code]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Download|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.youtube.com/user/BoofCV/videos Videos]&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Bounties| Bounties ]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Contributing|Contribute]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCPP BoofCPP]&lt;br /&gt;
|} &lt;br /&gt;
| width&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-graph-icon.png|100px|link=[[Performance:BoofCV]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Performance:BoofCV|Performance]]&lt;br /&gt;
|-&lt;br /&gt;
| [[BoofCV Roadmap | Road Map]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Validation:Algorithms | Validation]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Projects_Using_BoofCV | Users ]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Acknowledgements|Acknowledgements]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;SPAN STYLE=&amp;quot;font-size: 14pt;text-align:center&amp;quot;&amp;gt;Prebuild Stand Alone Applications&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Examples_and_Demonstrations|Examples / Demonstrations]] || Example and demonstration applications&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create QR Code|QR Code Generator]] || Create and print QR Codes&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Square_Binary|Square Fiducials]] || Binary/Image Square Fiducial Generator &lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Calibration_Fiducials|Calibration Targets]] || Calibration Target Generator&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Camera_Calibration|Calibration]] || Camera Calibration Application&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Undistort|Lens Undistortion]] ||  Batch Removal of Lens Distortion&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Downsize|Image Downsize]] ||  Batch Image Down Sampling with minimal aliasing&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
| colspan=5 style=&amp;quot;background-color:#ffffdd;&amp;quot; align=&amp;quot;center&amp;quot; |&lt;br /&gt;
== Capability Summary ==&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Image Processing &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Feature &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Recognition&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Geometric &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Integration&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Image Convolution || [[Example_Convolution|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Image Derivatives || [[Example_Image_Derivative|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Thresholding || [[Example_Thresholding|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Ops || [[Example_Binary_Image|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Space || [[Example_Color_Space|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interpolation || [[Example_Interpolation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Deformation || [[Example_Key_Point_Based_Deformation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Blur || [[Example_Image_Blur|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Enhancement || [[Example_Image_Enhancement|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Noise Removal || [[Example_Wavelet_Noise_Removal|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fourier Transform || [[Example_Discrete_Fourier_Transform|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Wavelet Decomposition || &lt;br /&gt;
|- &lt;br /&gt;
| Discrete Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Float Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Scale Space Image || &lt;br /&gt;
|-&lt;br /&gt;
| Equirectangular || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye Cameras || [[Example_Fisheye_To_Pinhole|Example]]&lt;br /&gt;
|&lt;br /&gt;
|} &lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Black Polygons || [[Example_Detect_Black_Polygons|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Black Ellipses || [[Example_Detect_Black_Ellipses|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interest Points || [[Example_Detect_Interest_Points|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Line Detection || [[Example_Detect_Lines|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Motion Detection || [[Example_Background_Moving_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Contours || [[Example_Binary_Image|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Polygon Fitting || [[Example_Fit_Polygon|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Ellipse Fitting || [[Example_Fit_Ellipse|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Template Matching || [[Example_Template_Matching|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Interest Points || [[Example_Detect_Describe_Interface|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Dense Features || [[Example_Dense_Image_Features|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Point Tracking || [[Example_Track_Point_Features|Example]]&lt;br /&gt;
|-  &lt;br /&gt;
| Non-max Suppression || [[Example_Non_Maximum_Suppression|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Dense Optical Flow || [[Example_Dense_Optical_Flow|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Superpixels || [[Example_Superpixels|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Color Segmentation || [[Example_Color_Segmentation|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Scene Recognition || [[Example_Scene_Recognition|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Image Lookup || [[Example_Color_Histogram_Lookup|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| KNN Classifier || [[Example_Scene_Classification|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| CNN Classifiers || [[Example_Image_Classification|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Object Tracking || [[Example_Tracker_Object|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fiducials || [[Tutorial_Fiducials|Tutorial]]&lt;br /&gt;
|-&lt;br /&gt;
| QR Codes || [[Tutorial_QRCodes|Tutorial]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| SFM || [[Tutorial_Geometric_Vision|Tutorial]] &lt;br /&gt;
|- &lt;br /&gt;
| Camera Calibration || [[Tutorial_Camera_Calibration|Tutorial]]&lt;br /&gt;
|- &lt;br /&gt;
| Mono Calibration || [[Example_Calibrate_Planar_Mono|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Fisheye Calibration || [[Example_Calibrate_Planar_Fisheye|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Stereo Calibration || [[Example_Calibrate_Planar_Stereo|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Remove Distortion || [[Example_Remove_Lens_Distortion|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Equi to Pinhole || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye to Equi|| [[Example_Fisheye_To_Equirectangular|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Bundle Adjustment || [[Example Sparse Bundle Adjustment|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| 3D Stereo Cloud || [[Example_Stereo_Disparity_3D|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Monocular Stereo || [[Example_Stereo_Single_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Uncalibrated Stereo || [[Example_Three_View_Stereo_Uncalibrated|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Multi Baseline Stereo || [[Example_Multi_Baseline_Stereo|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Scene Reconstruction || [[Example_Multiview_Reconstruction_Dense|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Video Stabilization || [[Example_Video_Stabilization|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Video Mosaic || [[Example_Video_Mosaic|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Stereo || [[Example_Stereo_Visual_Odometry|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Mono Plane || [[Example_Visual_Odometry_Monocular_Plane|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: RGB-D || [[Example_Visual_Odometry_Depth|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
| Visualization&lt;br /&gt;
|-&lt;br /&gt;
| [[Android_support|Android]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Videos and Webcams|Video]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Kinect|Kinect]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Processing|Processing]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/PyBoof Python]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Main_Page&amp;diff=3250</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Main_Page&amp;diff=3250"/>
		<updated>2022-11-10T16:42:35Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&lt;br /&gt;
[[File:Boofcv_logo_circles_frontpage.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
BoofCV is an open source library written from scratch for real-time computer vision. Its functionality covers a range of subjects, low-level image processing, camera calibration, feature detection/tracking, structure-from-motion, fiducial detection, and recognition. BoofCV has been released under an Apache  2.0 license for both academic and commercial use.&lt;br /&gt;
&lt;br /&gt;
BoofCV is organized into several packages: &amp;#039;&amp;#039;image processing&amp;#039;&amp;#039;, &amp;#039;&amp;#039;features&amp;#039;&amp;#039;, &amp;#039;&amp;#039;geometric vision&amp;#039;&amp;#039;, &amp;#039;&amp;#039;calibration&amp;#039;&amp;#039;, &amp;#039;&amp;#039;recognition&amp;#039;&amp;#039;,&amp;#039;&amp;#039;visualize&amp;#039;&amp;#039;, and &amp;#039;&amp;#039;IO&amp;#039;&amp;#039;.  &amp;#039;&amp;#039;Image processing&amp;#039;&amp;#039; contains commonly used image processing functions which operate directly on pixels.  &amp;#039;&amp;#039;Features&amp;#039;&amp;#039; contains feature extraction algorithms for use in higher level operations.  &amp;#039;&amp;#039;Calibration&amp;#039;&amp;#039; has routines for determining the camera&amp;#039;s intrinsic and extrinsic parameters.  &amp;#039;&amp;#039;Recognition&amp;#039;&amp;#039; is for recognition and tracking complex visual objects.  &amp;#039;&amp;#039;Geometric vision&amp;#039;&amp;#039; is composed of routines for processing extracted image features using 2D and 3D geometry. &amp;#039;&amp;#039;Visualize&amp;#039;&amp;#039; has routines for rendering and displaying extracted features.  &amp;#039;&amp;#039;IO&amp;#039;&amp;#039; has input and output routines for different data structures.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| &lt;br /&gt;
|-&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/wgPzlokxbXw|300|center}}&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/O_yAdsT8d84|300|center}}&lt;br /&gt;
|-&lt;br /&gt;
! New calibration tools in v0.39&lt;br /&gt;
! Three View Self Calibration&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://www.ninox360.com/calibration-targets 2022-Nov: Create calibration targets in your browser]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://www.ninox360.com/barcode-scanner 2022-Nov: Barcode scanner webapp]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://medium.com/p/35b431fcccf1 2022-Jan: Article on scanning Micro QR Codes]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[[Tutorial_Camera_Calibration|2021-Oct: Camera Calibration Tutorial has been re-written.]]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://youtu.be/RCL5tSt189M 2021-Mar: Stereo Cloud from Mars Perseverance Rover]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://youtu.be/ulpu03HTmwY 2020-Dec: 3D Reconstruction on Android]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://youtu.be/8pn9Ebw90uk 2020-June: BoofCV Summary for 0.34-0.36]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:Loose-lips.jpg|125px|link=https://groups.google.com/group/boofcv]] ||&lt;br /&gt;
{| width=&amp;quot;400pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Current Release: &amp;#039;&amp;#039;v0.41&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Date: &amp;#039;&amp;#039;September 2, 2022&amp;#039;&amp;#039; &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://github.com/lessthanoptimal/BoofCV/blob/v0.41/change.txt Change Log]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://youtu.be/BbTPQ9mIoQU Video Summary v0.38]&lt;br /&gt;
|}&lt;br /&gt;
| [[File:Boofcv_bug_propaganda_poster_small.jpg|125px|link=https://github.com/lessthanoptimal/BoofCV/issues]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| width=&amp;quot;600pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; |  [[File:Ninox360_icon_logo_moto.png|400px|link=https://www.ninox360.com]]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | A start up from the creators of BoofCV.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-help-icon.png|100px|link=[[Manual]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Manual]]&lt;br /&gt;
|-&lt;br /&gt;
| [[FAQ | FAQ]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.boofcv.org/javadoc/ JavaDoc]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCV/issues Report Bug]&lt;br /&gt;
|-&lt;br /&gt;
| [https://groups.google.com/group/boofcv Message Board]&lt;br /&gt;
|-&lt;br /&gt;
| [[Papers and Reports| Papers/Reports]]&lt;br /&gt;
|} &lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-binary-icon.png|100px|link=[https://github.com/lessthanoptimal/BoofCV Source Code]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Download|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.youtube.com/user/BoofCV/videos Videos]&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Bounties| Bounties ]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Contributing|Contribute]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCPP BoofCPP]&lt;br /&gt;
|} &lt;br /&gt;
| width&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-graph-icon.png|100px|link=[[Performance:BoofCV]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Performance:BoofCV|Performance]]&lt;br /&gt;
|-&lt;br /&gt;
| [[BoofCV Roadmap | Road Map]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Validation:Algorithms | Validation]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Projects_Using_BoofCV | Users ]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Acknowledgements|Acknowledgements]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;SPAN STYLE=&amp;quot;font-size: 14pt;text-align:center&amp;quot;&amp;gt;Prebuild Stand Alone Applications&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Examples_and_Demonstrations|Examples / Demonstrations]] || Example and demonstration applications&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create QR Code|QR Code Generator]] || Create and print QR Codes&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Square_Binary|Square Fiducials]] || Binary/Image Square Fiducial Generator &lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Calibration_Fiducials|Calibration Targets]] || Calibration Target Generator&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Camera_Calibration|Calibration]] || Camera Calibration Application&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Undistort|Lens Undistortion]] ||  Batch Removal of Lens Distortion&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Downsize|Image Downsize]] ||  Batch Image Down Sampling with minimal aliasing&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
| colspan=5 style=&amp;quot;background-color:#ffffdd;&amp;quot; align=&amp;quot;center&amp;quot; |&lt;br /&gt;
== Capability Summary ==&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Image Processing &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Feature &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Recognition&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Geometric &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Integration&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Image Convolution || [[Example_Convolution|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Image Derivatives || [[Example_Image_Derivative|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Thresholding || [[Example_Thresholding|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Ops || [[Example_Binary_Image|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Space || [[Example_Color_Space|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interpolation || [[Example_Interpolation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Deformation || [[Example_Key_Point_Based_Deformation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Blur || [[Example_Image_Blur|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Enhancement || [[Example_Image_Enhancement|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Noise Removal || [[Example_Wavelet_Noise_Removal|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fourier Transform || [[Example_Discrete_Fourier_Transform|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Wavelet Decomposition || &lt;br /&gt;
|- &lt;br /&gt;
| Discrete Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Float Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Scale Space Image || &lt;br /&gt;
|-&lt;br /&gt;
| Equirectangular || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye Cameras || [[Example_Fisheye_To_Pinhole|Example]]&lt;br /&gt;
|&lt;br /&gt;
|} &lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Black Polygons || [[Example_Detect_Black_Polygons|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Black Ellipses || [[Example_Detect_Black_Ellipses|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interest Points || [[Example_Detect_Interest_Points|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Line Detection || [[Example_Detect_Lines|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Motion Detection || [[Example_Background_Moving_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Contours || [[Example_Binary_Image|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Polygon Fitting || [[Example_Fit_Polygon|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Ellipse Fitting || [[Example_Fit_Ellipse|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Template Matching || [[Example_Template_Matching|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Interest Points || [[Example_Detect_Describe_Interface|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Dense Features || [[Example_Dense_Image_Features|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Point Tracking || [[Example_Track_Point_Features|Example]]&lt;br /&gt;
|-  &lt;br /&gt;
| Non-max Suppression || [[Example_Non_Maximum_Suppression|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Dense Optical Flow || [[Example_Dense_Optical_Flow|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Superpixels || [[Example_Superpixels|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Color Segmentation || [[Example_Color_Segmentation|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Scene Recognition || [[Example_Scene_Recognition|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Image Lookup || [[Example_Color_Histogram_Lookup|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| KNN Classifier || [[Example_Scene_Classification|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| CNN Classifiers || [[Example_Image_Classification|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Object Tracking || [[Example_Tracker_Object|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fiducials || [[Tutorial_Fiducials|Tutorial]]&lt;br /&gt;
|-&lt;br /&gt;
| QR Codes || [[Tutorial_QRCodes|Tutorial]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| SFM || [[Tutorial_Geometric_Vision|Tutorial]] &lt;br /&gt;
|- &lt;br /&gt;
| Camera Calibration || [[Tutorial_Camera_Calibration|Tutorial]]&lt;br /&gt;
|- &lt;br /&gt;
| Mono Calibration || [[Example_Calibrate_Planar_Mono|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Fisheye Calibration || [[Example_Calibrate_Planar_Fisheye|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Stereo Calibration || [[Example_Calibrate_Planar_Stereo|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Remove Distortion || [[Example_Remove_Lens_Distortion|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Equi to Pinhole || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye to Equi|| [[Example_Fisheye_To_Equirectangular|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Bundle Adjustment || [[Example Sparse Bundle Adjustment|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| 3D Stereo Cloud || [[Example_Stereo_Disparity_3D|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Monocular Stereo || [[Example_Stereo_Single_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Uncalibrated Stereo || [[Example_Three_View_Stereo_Uncalibrated|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Multi Baseline Stereo || [[Example_Multi_Baseline_Stereo|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Scene Reconstruction || [[Example_Multiview_Reconstruction_Dense|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Video Stabilization || [[Example_Video_Stabilization|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Video Mosaic || [[Example_Video_Mosaic|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Stereo || [[Example_Stereo_Visual_Odometry|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Mono Plane || [[Example_Visual_Odometry_Monocular_Plane|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: RGB-D || [[Example_Visual_Odometry_Depth|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
| Visualization&lt;br /&gt;
|-&lt;br /&gt;
| [[Android_support|Android]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Videos and Webcams|Video]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Kinect|Kinect]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Processing|Processing]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/PyBoof Python]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Tutorial_QRCodes&amp;diff=3249</id>
		<title>Tutorial QRCodes</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Tutorial_QRCodes&amp;diff=3249"/>
		<updated>2022-11-10T16:38:45Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Example_qrcode_detection.jpg|center|frame]]&lt;br /&gt;
&lt;br /&gt;
QR Codes is short for Quick Response Codes and you can find more out about them on [https://en.wikipedia.org/wiki/QR_code wikipedia]. QR Codes are widely used in factories, consumer products, computer applications as a way to transmit text, such as a website&amp;#039;s address or a part number, reliably using a camera.&lt;br /&gt;
&lt;br /&gt;
BoofCV provides various pre-built tools for scanning and decoding QR codes from images, as well as a programmer API for doing the same. The scanner included with BoofCV is one of the best performing open source libraries, see the performance study link below. The QR Code generator included with BoofCV is designed to be flexible and generate standards compliant markers. Many of the random QR Code generators found online actually generate non standards compliant markers in weird ways which will reduce the number of scanners that work on them. For example, I&amp;#039;ve seen tools which generate markers with the bits inverted!&lt;br /&gt;
&lt;br /&gt;
Quick Reference Links:&lt;br /&gt;
* [[Performance:QrCode | Performance Study]]&lt;br /&gt;
* [https://www.ninox360.com/barcode-scanner BoofCV Barcode Scanner Webapp]&lt;br /&gt;
* Detecting QR Codes [[Example_Detect_QR_Code|Source Code]] [https://youtu.be/TGg-xgTyaU8?t=272 YouTube]&lt;br /&gt;
* Encoding QR Codes [[Example_Render_QR_Code|Source Code]] [https://youtu.be/TGg-xgTyaU8?t=402 YouTube]&lt;br /&gt;
* Encoding Application&lt;br /&gt;
&lt;br /&gt;
The remainder of this short tutorial will focus on applications. For how to program your own tool using BoofCV see the links above to code examples. The demonstration application is good if you would like to see visualizations of intermediate steps when decoding a QR Code. This is useful if you wish to understand why it failed to detect a QR code.&lt;br /&gt;
&lt;br /&gt;
If you have not already done so, you should now download the pre-build application from the [[Applications| Applications Website.]].&lt;br /&gt;
&lt;br /&gt;
== Generating QR Codes ==&lt;br /&gt;
&lt;br /&gt;
[[File:Qrcode_creator_app.png|border|500px|Screenshot of QR Code Creator application.]]&lt;br /&gt;
&lt;br /&gt;
Both command line and GUI tools are provided. QR Code creation tool included with BoofCV is very flexible and lets you customize almost everything about a standards compliant QR code. Here is a summary of some of the their features:&lt;br /&gt;
&lt;br /&gt;
* Select output document type&lt;br /&gt;
* Select prebuilt paper sizes or specify a custom one&lt;br /&gt;
* Specify the QR Code size under various units&lt;br /&gt;
* Force different encoding and other low level QR code settings&lt;br /&gt;
* Advanced options for batch printing on a single document&lt;br /&gt;
&lt;br /&gt;
A screenshot of the GUI tool is shown above. As you type it will generate the results live and same codes for when you modify different settings. Both GUI and command line tools allow you to generate a grid of markers for when you need to mass produce them.&lt;br /&gt;
&lt;br /&gt;
To launch the GUI type the following:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
java -jar applications.jar --GUI&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Then select &amp;quot;QR Code&amp;quot; under &amp;quot;Create / Print&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
To run the command line tools type what is shown below and it will print out detailed help. &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
java -jar applications.jar CreateQrCodeDocument&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Batch Scanning ==&lt;br /&gt;
&lt;br /&gt;
Batch scanning can be accomplished using a command line interface or GUI. Paths can be specified directly, or using glob/regex patterns. Directories will be recursively searched. After you have downloaded or built the applications jar you can run it with the following command:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
java -jar applications/applications.jar BatchScanQrCodes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
This will print out the latest and most up to date usage information. Next you will need to add arguments that specify what it should process, and a few examples are listed below:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
-i /path/to/directory -o myresults.txt&lt;br /&gt;
   Finds all images in &amp;#039;path/to&amp;#039; directory&lt;br /&gt;
-i &amp;quot;regex:path/to/\w+\.jpg&amp;quot; -o myresults.txt&lt;br /&gt;
   Finds all files ending with .jpg in &amp;#039;path/to&amp;#039; directory&lt;br /&gt;
-i &amp;quot;glob:path/to/*.jpg&amp;quot; -o myresults.txt&lt;br /&gt;
   Finds all files ending with .jpg in &amp;#039;path/to&amp;#039; directory&lt;br /&gt;
-i &amp;quot;glob:path/**/*&amp;quot; -o myresults.txt&lt;br /&gt;
   Recursively search all directories starting at &amp;#039;path&amp;#039; for images&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just to be clear, to run one of those commands you need to pass it into the BatchScanQrCodes application as follows:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
java -jar applications/applications.jar BatchScanQrCodes -i &amp;quot;glob:data/example/fiducial/**/*&amp;quot; -o myresults.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
That example will scan all the fiducials example images for QR codes and dump the results to &amp;quot;myresults.txt&amp;quot;. On my computer it takes about 2 seconds to run.&lt;br /&gt;
&lt;br /&gt;
=== GUI ===&lt;br /&gt;
&lt;br /&gt;
The GUI is really just a light weight wrapper on top of the command line interface. To launch that type:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
java -jar applications/applications.jar --GUI&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then press the &amp;quot;Batch QR Code&amp;quot; button.&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Main_Page&amp;diff=3248</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Main_Page&amp;diff=3248"/>
		<updated>2022-11-10T16:26:44Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&lt;br /&gt;
[[File:Boofcv_logo_circles_frontpage.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
BoofCV is an open source library written from scratch for real-time computer vision. Its functionality covers a range of subjects, low-level image processing, camera calibration, feature detection/tracking, structure-from-motion, fiducial detection, and recognition. BoofCV has been released under an Apache  2.0 license for both academic and commercial use.&lt;br /&gt;
&lt;br /&gt;
BoofCV is organized into several packages: &amp;#039;&amp;#039;image processing&amp;#039;&amp;#039;, &amp;#039;&amp;#039;features&amp;#039;&amp;#039;, &amp;#039;&amp;#039;geometric vision&amp;#039;&amp;#039;, &amp;#039;&amp;#039;calibration&amp;#039;&amp;#039;, &amp;#039;&amp;#039;recognition&amp;#039;&amp;#039;,&amp;#039;&amp;#039;visualize&amp;#039;&amp;#039;, and &amp;#039;&amp;#039;IO&amp;#039;&amp;#039;.  &amp;#039;&amp;#039;Image processing&amp;#039;&amp;#039; contains commonly used image processing functions which operate directly on pixels.  &amp;#039;&amp;#039;Features&amp;#039;&amp;#039; contains feature extraction algorithms for use in higher level operations.  &amp;#039;&amp;#039;Calibration&amp;#039;&amp;#039; has routines for determining the camera&amp;#039;s intrinsic and extrinsic parameters.  &amp;#039;&amp;#039;Recognition&amp;#039;&amp;#039; is for recognition and tracking complex visual objects.  &amp;#039;&amp;#039;Geometric vision&amp;#039;&amp;#039; is composed of routines for processing extracted image features using 2D and 3D geometry. &amp;#039;&amp;#039;Visualize&amp;#039;&amp;#039; has routines for rendering and displaying extracted features.  &amp;#039;&amp;#039;IO&amp;#039;&amp;#039; has input and output routines for different data structures.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| &lt;br /&gt;
|-&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/wgPzlokxbXw|300|center}}&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/O_yAdsT8d84|300|center}}&lt;br /&gt;
|-&lt;br /&gt;
! New calibration tools in v0.39&lt;br /&gt;
! Three View Self Calibration&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://www.ninox360.com/calibration-targets 2022-Nov: Web calibration targets]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://medium.com/p/35b431fcccf1 2022-Jan: Article on scanning Micro QR Codes]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[[Tutorial_Camera_Calibration|2021-Oct: Camera Calibration Tutorial has been re-written.]]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://youtu.be/RCL5tSt189M 2021-Mar: Stereo Cloud from Mars Perseverance Rover]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://youtu.be/ulpu03HTmwY 2020-Dec: 3D Reconstruction on Android]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://youtu.be/8pn9Ebw90uk 2020-June: BoofCV Summary for 0.34-0.36]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:Loose-lips.jpg|125px|link=https://groups.google.com/group/boofcv]] ||&lt;br /&gt;
{| width=&amp;quot;400pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Current Release: &amp;#039;&amp;#039;v0.41&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Date: &amp;#039;&amp;#039;September 2, 2022&amp;#039;&amp;#039; &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://github.com/lessthanoptimal/BoofCV/blob/v0.41/change.txt Change Log]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://youtu.be/BbTPQ9mIoQU Video Summary v0.38]&lt;br /&gt;
|}&lt;br /&gt;
| [[File:Boofcv_bug_propaganda_poster_small.jpg|125px|link=https://github.com/lessthanoptimal/BoofCV/issues]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| width=&amp;quot;600pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; |  [[File:Ninox360_icon_logo_moto.png|400px|link=https://www.ninox360.com]]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | A start up from the creators of BoofCV.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-help-icon.png|100px|link=[[Manual]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Manual]]&lt;br /&gt;
|-&lt;br /&gt;
| [[FAQ | FAQ]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.boofcv.org/javadoc/ JavaDoc]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCV/issues Report Bug]&lt;br /&gt;
|-&lt;br /&gt;
| [https://groups.google.com/group/boofcv Message Board]&lt;br /&gt;
|-&lt;br /&gt;
| [[Papers and Reports| Papers/Reports]]&lt;br /&gt;
|} &lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-binary-icon.png|100px|link=[https://github.com/lessthanoptimal/BoofCV Source Code]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Download|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.youtube.com/user/BoofCV/videos Videos]&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Bounties| Bounties ]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Contributing|Contribute]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCPP BoofCPP]&lt;br /&gt;
|} &lt;br /&gt;
| width&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-graph-icon.png|100px|link=[[Performance:BoofCV]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Performance:BoofCV|Performance]]&lt;br /&gt;
|-&lt;br /&gt;
| [[BoofCV Roadmap | Road Map]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Validation:Algorithms | Validation]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Projects_Using_BoofCV | Users ]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Acknowledgements|Acknowledgements]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;SPAN STYLE=&amp;quot;font-size: 14pt;text-align:center&amp;quot;&amp;gt;Prebuild Stand Alone Applications&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Examples_and_Demonstrations|Examples / Demonstrations]] || Example and demonstration applications&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create QR Code|QR Code Generator]] || Create and print QR Codes&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Square_Binary|Square Fiducials]] || Binary/Image Square Fiducial Generator &lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Calibration_Fiducials|Calibration Targets]] || Calibration Target Generator&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Camera_Calibration|Calibration]] || Camera Calibration Application&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Undistort|Lens Undistortion]] ||  Batch Removal of Lens Distortion&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Downsize|Image Downsize]] ||  Batch Image Down Sampling with minimal aliasing&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
| colspan=5 style=&amp;quot;background-color:#ffffdd;&amp;quot; align=&amp;quot;center&amp;quot; |&lt;br /&gt;
== Capability Summary ==&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Image Processing &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Feature &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Recognition&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Geometric &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Integration&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Image Convolution || [[Example_Convolution|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Image Derivatives || [[Example_Image_Derivative|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Thresholding || [[Example_Thresholding|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Ops || [[Example_Binary_Image|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Space || [[Example_Color_Space|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interpolation || [[Example_Interpolation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Deformation || [[Example_Key_Point_Based_Deformation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Blur || [[Example_Image_Blur|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Enhancement || [[Example_Image_Enhancement|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Noise Removal || [[Example_Wavelet_Noise_Removal|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fourier Transform || [[Example_Discrete_Fourier_Transform|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Wavelet Decomposition || &lt;br /&gt;
|- &lt;br /&gt;
| Discrete Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Float Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Scale Space Image || &lt;br /&gt;
|-&lt;br /&gt;
| Equirectangular || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye Cameras || [[Example_Fisheye_To_Pinhole|Example]]&lt;br /&gt;
|&lt;br /&gt;
|} &lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Black Polygons || [[Example_Detect_Black_Polygons|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Black Ellipses || [[Example_Detect_Black_Ellipses|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interest Points || [[Example_Detect_Interest_Points|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Line Detection || [[Example_Detect_Lines|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Motion Detection || [[Example_Background_Moving_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Contours || [[Example_Binary_Image|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Polygon Fitting || [[Example_Fit_Polygon|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Ellipse Fitting || [[Example_Fit_Ellipse|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Template Matching || [[Example_Template_Matching|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Interest Points || [[Example_Detect_Describe_Interface|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Dense Features || [[Example_Dense_Image_Features|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Point Tracking || [[Example_Track_Point_Features|Example]]&lt;br /&gt;
|-  &lt;br /&gt;
| Non-max Suppression || [[Example_Non_Maximum_Suppression|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Dense Optical Flow || [[Example_Dense_Optical_Flow|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Superpixels || [[Example_Superpixels|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Color Segmentation || [[Example_Color_Segmentation|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Scene Recognition || [[Example_Scene_Recognition|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Image Lookup || [[Example_Color_Histogram_Lookup|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| KNN Classifier || [[Example_Scene_Classification|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| CNN Classifiers || [[Example_Image_Classification|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Object Tracking || [[Example_Tracker_Object|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fiducials || [[Tutorial_Fiducials|Tutorial]]&lt;br /&gt;
|-&lt;br /&gt;
| QR Codes || [[Tutorial_QRCodes|Tutorial]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| SFM || [[Tutorial_Geometric_Vision|Tutorial]] &lt;br /&gt;
|- &lt;br /&gt;
| Camera Calibration || [[Tutorial_Camera_Calibration|Tutorial]]&lt;br /&gt;
|- &lt;br /&gt;
| Mono Calibration || [[Example_Calibrate_Planar_Mono|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Fisheye Calibration || [[Example_Calibrate_Planar_Fisheye|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Stereo Calibration || [[Example_Calibrate_Planar_Stereo|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Remove Distortion || [[Example_Remove_Lens_Distortion|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Equi to Pinhole || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye to Equi|| [[Example_Fisheye_To_Equirectangular|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Bundle Adjustment || [[Example Sparse Bundle Adjustment|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| 3D Stereo Cloud || [[Example_Stereo_Disparity_3D|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Monocular Stereo || [[Example_Stereo_Single_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Uncalibrated Stereo || [[Example_Three_View_Stereo_Uncalibrated|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Multi Baseline Stereo || [[Example_Multi_Baseline_Stereo|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Scene Reconstruction || [[Example_Multiview_Reconstruction_Dense|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Video Stabilization || [[Example_Video_Stabilization|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Video Mosaic || [[Example_Video_Mosaic|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Stereo || [[Example_Stereo_Visual_Odometry|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Mono Plane || [[Example_Visual_Odometry_Monocular_Plane|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: RGB-D || [[Example_Visual_Odometry_Depth|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
| Visualization&lt;br /&gt;
|-&lt;br /&gt;
| [[Android_support|Android]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Videos and Webcams|Video]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Kinect|Kinect]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Processing|Processing]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/PyBoof Python]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Tutorial_Camera_Calibration&amp;diff=3247</id>
		<title>Tutorial Camera Calibration</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Tutorial_Camera_Calibration&amp;diff=3247"/>
		<updated>2022-11-10T16:17:26Z</updated>

		<summary type="html">&lt;p&gt;Peter: /* Obtaining Targets PDFs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BoofCV contains a toolbox and API for camera calibration with plenty of source code examples and pre-build GUI applications. Camera calibration (also known as camera resectioning) is the process of estimating intrinsic and/or extrinsic parameters. Intrinsic parameters deal with the camera&amp;#039;s internal characteristics, such as, its focal length, skew, distortion, and image center. Extrinsic parameters describe its position and orientation in the world. Knowing intrinsic parameters is an essential first step for 3D computer vision, as it allows you to estimate the scene&amp;#039;s structure in Euclidean space and removes lens distortion, which degrades accuracy. BoofCV provides fully automated calibration for several planar target types (see pictures above) that can be easily printed on standard sized paper. &lt;br /&gt;
&lt;br /&gt;
Calibration in BoofCV is heavily influenced by Zhengyou Zhang&amp;#039;s 1999 paper, &amp;quot;Flexible Camera Calibration By Viewing a Plane From Unknown Orientations&amp;quot;.  See his webpage below for the paper and theoretical information on camera calibration. A link is also provided to a popular matlab calibration toolbox.&lt;br /&gt;
&lt;br /&gt;
It is possible to either manually collect images and process them or to use a fully automated assisted calibration. Both approaches are described below.&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
* [http://research.microsoft.com/en-us/um/people/zhang/Calib/ Zhang&amp;#039;s Camera Calibration]&lt;br /&gt;
* [http://www.vision.caltech.edu/bouguetj/calib_doc/ CalTech&amp;#039;s Matlab Calibration Toolbox]&lt;br /&gt;
* [http://www.amazon.com/gp/product/0521540518/ref=as_li_ss_tl?ie=UTF8&amp;amp;tag=boofcv-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0521540518 R. Hartley, and A. Zisserman, &amp;quot;Multiple View Geometry in Computer Vision&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
= Papers and How to Cite =&lt;br /&gt;
&lt;br /&gt;
If you use BoofCV in academic work please cite it so others can find out about it! &lt;br /&gt;
&lt;br /&gt;
* [[Papers_and_Reports | Citing BoofCV]]&lt;br /&gt;
* [https://arxiv.org/abs/2110.13793 Chessboard X-Corner Detector]&lt;br /&gt;
* Assisted Calibration (to be written)&lt;br /&gt;
&lt;br /&gt;
= Shameless Promotion = &lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Ninox360_icon_logo_moto.png|400px|link=https://www.ninox360.com]]&lt;br /&gt;
{|  width=&amp;quot;600pt&amp;quot; &lt;br /&gt;
|&lt;br /&gt;
* Support developers of BoofCV&lt;br /&gt;
* Specialized in manufacturing and warehouse automation&lt;br /&gt;
* Managed smart camera systems so you don&amp;#039;t need to deal with all the hard stuff&lt;br /&gt;
* Highly customized solutions for your application&lt;br /&gt;
* Will design and implement industrial calibration systems customized for your applications&lt;br /&gt;
* Proprietary in-situ self calibration technology&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Coordinate Systems =&lt;br /&gt;
&lt;br /&gt;
Please refer to [[Coordinate_Systems|Coordinate System]] page and understand how BoofCV defines its coordinate system.&lt;br /&gt;
&lt;br /&gt;
= The Calibration Process =&lt;br /&gt;
&lt;br /&gt;
In this section, the camera calibration procedure is broken down into steps and explained.  Almost identical steps are followed for calibration a single camera or a stereo camera system.  First a quick overview:&lt;br /&gt;
&lt;br /&gt;
# Select a pattern, download (or create your own), and print&lt;br /&gt;
# Mount the pattern onto a rigid flat surface&lt;br /&gt;
# Take many pictures of the target at different orientations and distances&lt;br /&gt;
# Download pictures to compute and select ones that are in focus&lt;br /&gt;
# Use provided examples to automatically detect calibration target and compute parameters&lt;br /&gt;
# Move calibration file to a safe location&lt;br /&gt;
&lt;br /&gt;
Which calibration target you use is a matter of personal preference.  Chessboard patterns tend to produce slightly more accurate results.&lt;br /&gt;
&lt;br /&gt;
== Selecting Calibration Target ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Different types of supported planar calibration grids&amp;quot; heights=150 widths=125 &amp;gt;&lt;br /&gt;
File:Calibration letter chessboard 7x5.png|Chessboard&lt;br /&gt;
File:Calibration letter squaregrid 5x4.png|Square Grid&lt;br /&gt;
File:Calibration letter circlehex 20x24.png|Circle Hexagonal Grid&lt;br /&gt;
File:Calibration letter circlegrid 17x12.png|Circle Regular Grid&lt;br /&gt;
File:Ecocheck_9x7n1.png|ECoCheck&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Name&lt;br /&gt;
| Multi-Camera&lt;br /&gt;
| Blur&lt;br /&gt;
| Border&lt;br /&gt;
| Fisheye&lt;br /&gt;
|-&lt;br /&gt;
| Chessboard || || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
|Square Grid || || || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| Circle Hexagonal Grid || || || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Circle Regular Grid || || || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| ECoCheck || Yes || Yes || Yes || Yes&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Multi-Camera&amp;#039;&amp;#039;&amp;#039; indicates the pattern is appropriate to use for multi-camera calibration as the target can be uniquely identified even when it&amp;#039;s partially visible. &lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Border&amp;#039;&amp;#039;&amp;#039; means the landmarks can be detected right up the image border.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Blur&amp;#039;&amp;#039;&amp;#039; means its resilient to blur. If not resilient then the accuracy will degrade linearly to the blur magnitude. This is particularly important with high resolution images which almost always have blur. &lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;fisheye&amp;#039;&amp;#039;&amp;#039; means it can provide accurate landmark locations even under fisheye distortion.&lt;br /&gt;
&lt;br /&gt;
For multi-camera calibration, ECoCheck is the recommended target type since its a self-identifying pattern and due to the encoded binary patterns you can identify uniquely each landmark even when obstructed. For single camera calibration then either chessboard of ECoCheck can be used as they have symmetry counter acts shrinking caused by blur. The other target types will degrade in accuracy when there is any blur or under lens distortion. Unless you are very careful there will almost always be some blur from being out of focus or motion. This issue has been exaggerated as the resolutions of cameras has increased.&lt;br /&gt;
&lt;br /&gt;
== Obtaining Targets PDFs ==&lt;br /&gt;
&lt;br /&gt;
The first step to creating a calibration target is downloading or creating your own PDF then printing it. After printing you will need to mount the printed document on a rigid board, discussed in the next section&lt;br /&gt;
&lt;br /&gt;
* Create targets in your browser and save as PDF. ([https://www.ninox360.com/calibration-targets link])&lt;br /&gt;
* For a list of readily printable calibration targets see the [[Camera_Calibration_Targets|Calibration Targets]] page.  &lt;br /&gt;
* The [[Camera_Calibration_Targets|Calibration Targets]] page also provides instructions on using a BoofCV application to generate your own custom targets.&lt;br /&gt;
* Instructions for how to create your own arbitrary calibration target for any sized paper can also be found at the [[Camera_Calibration_Targets|Calibration Targets]] page.&lt;br /&gt;
** [https://youtu.be/TGg-xgTyaU8?t=604 YouTube Video Showing GUI Application]&lt;br /&gt;
&lt;br /&gt;
[[File:Online_calibration_target_generator.jpg|300px|link=https://www.ninox360.com/calibration-targets]]&lt;br /&gt;
&lt;br /&gt;
Screenshot of Calibration Target Website&lt;br /&gt;
&lt;br /&gt;
== Mounting and Testing ==&lt;br /&gt;
&lt;br /&gt;
After printing, the target needs to be mounted on a rigid flat surface.  Any warping will decrease calibration accuracy.  An ideal surface will be rigid and smooth.  [http://www.amazon.com/gp/product/B000KNL4RK/ref=as_li_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=B000KNL4RK&amp;amp;linkCode=as2&amp;amp;tag=boofcv-20&amp;amp;linkId=FZWYY2AOFVCIYOOF Thick foam poster board] is easily obtainable and works well.  I&amp;#039;ve also used [http://amzn.to/1kIedjn clipboards] with some minor modifications.  Cardboard is OK if high precision isn&amp;#039;t required well.  For a well made target and a decent camera reprojection error is typically around 0.1 pixels.&lt;br /&gt;
&lt;br /&gt;
You should now do a quick test to make sure you did everything correctly and that the software can detect your new target. If you have never done camera calibration before this is also a good way to learn what you should not do when taking your photos for calibration. If you have a webcam installed on your compute this test is easy. To do the quick test simply launch the [[Tutorial_Camera_Calibration#Webcam_Assisted|assisted camera calibration app]], configure it for your target type, and see if detects the target. &lt;br /&gt;
&lt;br /&gt;
Detection Trouble Shooting:&lt;br /&gt;
&lt;br /&gt;
* Is your hand touching the calibration pattern? Move your hand.&lt;br /&gt;
* Try to ensure the lighting is diffuse, uniform, and avoid glare.&lt;br /&gt;
* Does the target your printed look like the target in the preview? If not adjust the settings until it does.&lt;br /&gt;
* Harsh shadows can sometimes cause problems.&lt;br /&gt;
* Some target types require the entire target to be inside the camera&amp;#039;s FOV&lt;br /&gt;
&lt;br /&gt;
Quick comment about target row/column specifications. How rows and columns in a target is counted isn&amp;#039;t universally agreed upon. In BoofCV we always count the squares or circles. To help you the PDF generator will the target&amp;#039;s name and characteristics in the lower left hand corner.&lt;br /&gt;
&lt;br /&gt;
== Calibration Target Placement ==&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[[File:Calibration placement.jpg|600px|Position the calibration target so that it covers the entire image, especially the image border and corners.  The assisted calibration tool can help you do this.]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When collecting calibration images it is best to take a diverse set of in focus image which cover the entire image, especially the image border.  An example of how one can do this is down in the figure above.  One problem when calibrating a camera is that the residual error can&amp;#039;t be trusted as a way to verify correctness.  For example, if all the pictures are taken in one region the results will be biased, even if the residual error is low.  Also avoid extreme angles or changes distance should be avoided.  &lt;br /&gt;
&lt;br /&gt;
A good way to check to see if calibration was done correctly is to see if straight edges are straight.  In an undistorted image try moving a ruler to the image border and see if its warped.  For stereo images you can see if rectification is correct by clicking on an easily recognizable feature and seeing if it is at the same y-coordinate in the other image.&lt;br /&gt;
&lt;br /&gt;
= Supported Camera Models =&lt;br /&gt;
&lt;br /&gt;
Camera models are provided for narrow (normal cameras, &amp;lt; 180 degrees FOV), and wide (no limit on FOV, a.k.a fisheye). Narrow camera models take in points that are in pixels &amp;lt;math&amp;gt;(x,y)&amp;lt;/math&amp;gt; or normalized image coordinates &amp;lt;math&amp;gt;(x_n,y_n)&amp;lt;/math&amp;gt;. Normalized image coordinates represent a 3D pointing vector with the implicit assumption that &amp;lt;math&amp;gt;z=1&amp;lt;/math&amp;gt;, which is what limits the FOV. Wide camera models use spherical coordinates &amp;lt;math&amp;gt;(x_s,y_s,z_s)&amp;lt;/math&amp;gt; instead since they do not make the assumption that visible points always appear in front of the camera.&lt;br /&gt;
&lt;br /&gt;
If you use the calibration application you can decide if you want to save the found parameters in BoofCV and OpenCV formats. OpenCV is only provided for Brown as the other camera models are not identical between the two libraries.&lt;br /&gt;
&lt;br /&gt;
== Pinhole Model ==&lt;br /&gt;
&lt;br /&gt;
This is the most basic camera model and does not model lens distortion. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left[ \begin{array}{c} x \\ y \\ 1 \end{array} \right] = \left[ \begin{array}{ccc} f_x &amp;amp; skew &amp;amp; cx \\ 0 &amp;amp; f_y &amp;amp; c_y \\ 0 &amp;amp; 0 &amp;amp; 1 \end{array} \right]&lt;br /&gt;
\left[ \begin{array}{c} x_n \\ y_n \\ 1 \end{array} \right]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the 3x3 is the intrinsic camera matrix and is also known as &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Brown Model ==&lt;br /&gt;
&lt;br /&gt;
The Brown camera model [1] is the most popular and models lens distortion radial and tangential (&amp;quot;decentering&amp;quot;) distortion. It is appropriate for most lenses with a FOV less than 180 degrees.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left[ \begin{array}{c} x \\ y \\ 1 \end{array} \right] \sim K \left[ \begin{array}{c} x_d \\ y_d \\ 1 \end{array} \right]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left[ \begin{array}{c}x_d \\ y_d \end{array} \right] = \sum_{i=0}^{i&amp;lt;rad} a_i r^{2i} \left[ \begin{array}{c}x_n \\ y_n \end{array} \right] + \left[ \begin{array}{c} 2t_1 x_n y_n + t_2(r^2 + 2x^2_n)  \\ t_1(r^2 + 2y^2_n) + 2t_2 x_n y_n \end{array} \right]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;r=\sqrt{x_n^2 + y_n^2}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;a_i&amp;lt;/math&amp;gt; are radial distortion coefficients, and &amp;lt;math&amp;gt;(t_1, t_2)&amp;lt;/math&amp;gt; are the tangential coefficients.&lt;br /&gt;
&lt;br /&gt;
== Universal Omni Model ==&lt;br /&gt;
[[File:Camera_model_universal_diagram.png|center|400px|Image formation from universal omni camera model]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Universal Omni [2] camera model adds a mirror offset &amp;lt;math&amp;gt;\epsilon&amp;lt;/math&amp;gt; to the Brown model and can model parabola, hyperbola, ellipse, and plane mirror equations. The only difference from the Brown camera model is how it converts spherical coordinates into normalized image coordinates:&lt;br /&gt;
&amp;lt;math&amp;gt;\left[ \begin{array}{c}x_n \\ y_n \end{array} \right] =&lt;br /&gt;
\left[ \begin{array}{c}x_s/(z_s+\epsilon) \\ y_s/(z_s+\epsilon) \end{array} \right]&amp;lt;/math&amp;gt;&lt;br /&gt;
After this step it has identical equations to Brown.&lt;br /&gt;
&lt;br /&gt;
== Kannala-Brandt Model ==&lt;br /&gt;
&lt;br /&gt;
Kannala-Brandt [3] is a wide camera model that supports perspective, stereographic, equidistance, equisolid angle, and orthogonal projection models. BoofCV&amp;#039;s implementation is a bit unusual in that it supports the full camera model as presented in [3], with symmetric and asymmetric distortion terms. Most libraries just support the Radially symmetric.&lt;br /&gt;
&lt;br /&gt;
Radially Symmetric Model:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;r(\theta) = k_1\theta + k_2\theta^3 + k_3 \theta^5 + \cdots&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left[ \begin{array}{c}x_n \\ y_n \end{array} \right] = r(\theta)&lt;br /&gt;
\left[ \begin{array}{c}\cos \phi \\ \sin \phi \end{array}  \right]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Radial Distortion Model:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta_r(\theta, \phi) = (l_1 \phi + l_2 \phi^3 + l_3 \phi^5)(i_1 \cos \phi + i_2 \sin \phi + i_3 \cos 2\phi + i_4 \sin 2\phi)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tangential Distortion Model:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta_t(\theta, \phi) = (m_1 \phi + m_2 \phi^3 + m_3 \phi^5)(j_1 \cos \phi + j_2 \sin \phi + j_3 \cos 2\phi + j_4 \sin 2\phi)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Full Camera Model:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_d = r(\theta)u_r(\phi) + \Delta_r(\theta, \phi) u_r(\phi) + \Delta_t(\theta, \phi) u_\phi(\phi)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;x_d&amp;lt;/math&amp;gt; are the distorted normalized image coordinates, &amp;lt;math&amp;gt;u_r(\phi)&amp;lt;/math&amp;gt; is a unit vector in radial direction, and &amp;lt;math&amp;gt;u_\phi(\phi)&amp;lt;/math&amp;gt; is a unit vector in tangential direction.&lt;br /&gt;
&lt;br /&gt;
== Appendix ==&lt;br /&gt;
&lt;br /&gt;
* [1] Brown, D. C. &amp;quot;Decentering distortion of lenses, photometric engineering.&amp;quot; (1966): 444-462.&lt;br /&gt;
* [2] Christopher Mei, and Patrick Rives. &amp;quot;Single view point omnidirectional camera calibration from planar grids.&amp;quot; ICRA 2007.&lt;br /&gt;
* [3] Kannala, J., and Brandt, S. S. &amp;quot;A generic camera model and calibration method for conventional, wide-angle, and fish-eye lenses&amp;quot; 2006&lt;br /&gt;
&lt;br /&gt;
= Calibration Applications =&lt;br /&gt;
&lt;br /&gt;
BoofCV comes with applications for camera calibrations which can be used as either commandline tools or GUI applications. The easiest way to use them is to launch the Applications jar then click on the calibration tool you wish to use. The commandline interface provide access to all the options and allow you to select images using Glob or Regex commands. For those who wish to use BoofCV to detect calibration landmarks but want another tool to do the actual calibration, you can save the landmarks detected for each image to a file. &lt;br /&gt;
&lt;br /&gt;
[[File:Boofcv_applications.png|center|400px|Screen shot of applications master app that let&amp;#039;s you select the calibration tool using a GUI]]&lt;br /&gt;
&lt;br /&gt;
To launch the tools from the command line you can use the following about building/downloading &amp;quot;applications.jar&amp;quot;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
java -jar applications.jar CameraCalibrationMono&lt;br /&gt;
java -jar applications.jar CameraCalibrationStereo&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Links&lt;br /&gt;
* [[Applications|Download or Build Applications]]&lt;br /&gt;
&lt;br /&gt;
== Webcam Assisted ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[[file:Youtube_calibration.jpg|link=https://www.youtube.com/watch?v=3SWX1iQRbsg|Demonstration Video]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This live webcam calibration application is interactive and designed to ensure that your image set will be in focus, collected around the image border, and have sufficient geometric diversity.  This is accomplished by; 1) guiding you to specific locations inside the image, 2) mathematically examining the current solution to see if it has sufficient geometric diversity and will converge, and 3) collecting multiple images at each location but only using the one which is the most in focus. Once you are done capturing images you&amp;#039;re then presented with another view where you can view the results for individual images and across the whole dataset.&lt;br /&gt;
&lt;br /&gt;
All data is saved disk along with the found intrinsic camera parameters. Please view the video above before proceeding.  &lt;br /&gt;
&lt;br /&gt;
Usage Examples:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
java -jar applications.jar CameraCalibrationMono --Camera=0 --Resolution=640:480 CHESSBOARD --Grid=7:5&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The arguments specify which camera to use, it&amp;#039;s resolution, type of calibration target, and the calibration target&amp;#039;s shape. Results will be stored in the &amp;quot;calibration_data&amp;quot; directory. You can also use the --GUI flag and graphically select a camera and configure the calibration target.&lt;br /&gt;
&lt;br /&gt;
=== Custom Video Sources ===&lt;br /&gt;
&lt;br /&gt;
The assisted calibration by default uses video feed from [http://webcam-capture.sarxos.pl/ Webcam Capture].  With a little bit of coding it&amp;#039;s easy to add video sources from really anything as long as you can get a BufferedImage.  Take a look at [https://github.com/lessthanoptimal/BoofCV/blob/master/applications/src/boofcv/app/CameraCalibration.java CameraCalibration].&lt;br /&gt;
&lt;br /&gt;
== Monocular Calibration ==&lt;br /&gt;
&lt;br /&gt;
BoofCV provides both command line tools and a GUI application for calibrating different types of cameras. A screenshot is shown below of the application. The application is designed to help you visually verify results quickly and accurately while also providing statistical results. Camera model parameters and target type can both be easily changed in the GUI. Bad features and images can also be removed so that they won&amp;#039;t corrupt your results. The latest instruction for the command line tool can be found by typing &amp;quot;--Help&amp;quot; as a flag.&lt;br /&gt;
&lt;br /&gt;
If you would like to use a pre-built application it can be downloaded from here:&lt;br /&gt;
&lt;br /&gt;
* [[Applications#Camera_Calibration|Pre-build Calibration Application]]&lt;br /&gt;
* [https://youtu.be/wgPzlokxbXw YouTube video showing application]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That will print out instructions.  There are two methods of input with that application.  Images from a directory or live video feed from a webcam.  &lt;br /&gt;
&lt;br /&gt;
[[File:Calibration_app_mono.jpg|center|frame|link=https://youtu.be/wgPzlokxbXw|Both fisheye and regular cameras can be calibrated using the same application. Target type and camera model can both be changed. Bad features and images can be removed.]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Trouble Shooting&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* [[Manual#Build|General build problems]]&lt;br /&gt;
&lt;br /&gt;
== Stereo Calibration ==&lt;br /&gt;
&lt;br /&gt;
* [https://youtu.be/wgPzlokxbXw?t=665 YouTube video showing application]&lt;br /&gt;
&lt;br /&gt;
[[File:Calibration_app_stereo.jpg|center|frame|link=https://youtu.be/wgPzlokxbXw?t=665|Screen shot of the stereo calibration application. Camera model and target type can be changed in the GUI. Contains tools to verify that recitification was done correctly. Landmarks and images can be removed.]]&lt;br /&gt;
&lt;br /&gt;
== Command Line Interface ==&lt;br /&gt;
&lt;br /&gt;
The same applications can be used to calibrate from a set of previously collected images saved into a directory.  By default a GUI visualizing the results is displayed, but this can be turned off.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
java -jar applications.jar  CameraCalibration --Directory=images/ CHESSBOARD --Grid=7:5&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Results will be stored in the &amp;quot;calibration_data&amp;quot; directory.  This includes found calibration parameters along with the collected images. If using the command line isn&amp;#039;t your thing then use the --GUI flag and select the input directory.&lt;br /&gt;
&lt;br /&gt;
== Calibration from Source Code ==&lt;br /&gt;
&lt;br /&gt;
Coding up your own software to load and process calibration images is also easy, but more tedious.  The calibration application also doesn&amp;#039;t support stereo cameras yet.  &lt;br /&gt;
&lt;br /&gt;
Example Code:&lt;br /&gt;
# [[Example_Calibrate_Planar_Mono| Calibrate Monocular Camera]]&lt;br /&gt;
# [[Example_Calibrate_Planar_Fisheye| Calibrate Fisheye Camera]]&lt;br /&gt;
# [[Example_Calibrate_Planar_Stereo| Calibrate Stereo Camera]]&lt;br /&gt;
&lt;br /&gt;
= Batch Undistortion Tools =&lt;br /&gt;
&lt;br /&gt;
== Removing Lens Distortion from Images ==&lt;br /&gt;
&lt;br /&gt;
Most computer vision algorithms assume a pin hole camera model.  Undistorting an image allows you to treat the image like a pin-hole camera and can make it visually more appearing since the borders are no longer heavily distorted.  This operation can be relatively expensive.  Internally most algorithm in BoofCV detect features in the distorted image then undistort individual features&lt;br /&gt;
&lt;br /&gt;
Example Code:&lt;br /&gt;
# [[Example_Remove_Lens_Distortion| Remove Lens Distortion]]&lt;br /&gt;
&lt;br /&gt;
== Stereo Rectification ==&lt;br /&gt;
&lt;br /&gt;
Stereo rectification is the process of distorting two images such that both their epipoles are at infinity, typically along the x-axis.  When this happens the epipolar lines are all parallel to each other simplifying the problem of finding feature correspondences to searching along the image axis.  Many stereo algorithms require images to be rectified first.&lt;br /&gt;
&lt;br /&gt;
Rectification can be done on calibrated or uncalibrated images.  Calibration in this case refers to the stereo baseline (extrinsic parameters between two cameras) to be known. Although in practice it is often required that lens distortion be removed from the images even in the &amp;quot;uncalibrated&amp;quot; case.&lt;br /&gt;
&lt;br /&gt;
The uncalibrated case can be done using automatically detected and associated features, however it is much tricker to get right than the calibrated case.  Any small association error will cause a large error in rectification.  Even if a state of the art and robust feature is used (e.g. SURF) and matches are pruned using the epipolar constraint, this alone will not be enough.  Additional knowledge of the scene needs to be taken in account.&lt;br /&gt;
&lt;br /&gt;
# [[Example_Rectification_Calibrated| Rectify Calibrated Stereo]]&lt;br /&gt;
# [[Example_Rectification_Uncalibrated| Rectify Uncalibrated Stereo]]&lt;br /&gt;
&lt;br /&gt;
= OpenCV Friendly =&lt;br /&gt;
&lt;br /&gt;
BoofCV can read and write YAML camera calibration files in OpenCV&amp;#039;s format. You can calibrate your camera in BoofCV using the assisted calibration app and then use its results in OpenCV!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
CameraPinholeRadial param = CalibrationIO.loadOpenCV(&amp;quot;boofcv_intrinsic.yaml&amp;quot;));&lt;br /&gt;
UtilOpenCV.saveOpenCV(param, &amp;quot;opencv_intrinsic.yaml&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
where &amp;quot;boofcv_intrinsic.yaml&amp;quot; is file containing intrinsic camera parameters in BoofCV format and &amp;quot;opencv_intrinsic.yaml&amp;quot; is a file in OpenCV format.&lt;br /&gt;
&lt;br /&gt;
= Other Camera Calibration Tools =&lt;br /&gt;
&lt;br /&gt;
Here&amp;#039;s a list of other tools for camera calibration, in alphabetical order. If you know of other tools that should be listed here post the suggestion on the [https://groups.google.com/g/boofcv?pli=1 message board].&lt;br /&gt;
&lt;br /&gt;
* [http://www.vision.caltech.edu/bouguetj/calib_doc/htmls/example.html CalTech&amp;#039;s Matlab Toolbox:]&lt;br /&gt;
* [http://mrcal.secretsauce.net/ mrcal (NASA/JPL)]&lt;br /&gt;
* [https://docs.opencv.org/4.5.3/dc/dbb/tutorial_py_calibration.html OpenCV]&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Tutorial_Camera_Calibration&amp;diff=3246</id>
		<title>Tutorial Camera Calibration</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Tutorial_Camera_Calibration&amp;diff=3246"/>
		<updated>2022-11-10T16:14:30Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BoofCV contains a toolbox and API for camera calibration with plenty of source code examples and pre-build GUI applications. Camera calibration (also known as camera resectioning) is the process of estimating intrinsic and/or extrinsic parameters. Intrinsic parameters deal with the camera&amp;#039;s internal characteristics, such as, its focal length, skew, distortion, and image center. Extrinsic parameters describe its position and orientation in the world. Knowing intrinsic parameters is an essential first step for 3D computer vision, as it allows you to estimate the scene&amp;#039;s structure in Euclidean space and removes lens distortion, which degrades accuracy. BoofCV provides fully automated calibration for several planar target types (see pictures above) that can be easily printed on standard sized paper. &lt;br /&gt;
&lt;br /&gt;
Calibration in BoofCV is heavily influenced by Zhengyou Zhang&amp;#039;s 1999 paper, &amp;quot;Flexible Camera Calibration By Viewing a Plane From Unknown Orientations&amp;quot;.  See his webpage below for the paper and theoretical information on camera calibration. A link is also provided to a popular matlab calibration toolbox.&lt;br /&gt;
&lt;br /&gt;
It is possible to either manually collect images and process them or to use a fully automated assisted calibration. Both approaches are described below.&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
* [http://research.microsoft.com/en-us/um/people/zhang/Calib/ Zhang&amp;#039;s Camera Calibration]&lt;br /&gt;
* [http://www.vision.caltech.edu/bouguetj/calib_doc/ CalTech&amp;#039;s Matlab Calibration Toolbox]&lt;br /&gt;
* [http://www.amazon.com/gp/product/0521540518/ref=as_li_ss_tl?ie=UTF8&amp;amp;tag=boofcv-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0521540518 R. Hartley, and A. Zisserman, &amp;quot;Multiple View Geometry in Computer Vision&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
= Papers and How to Cite =&lt;br /&gt;
&lt;br /&gt;
If you use BoofCV in academic work please cite it so others can find out about it! &lt;br /&gt;
&lt;br /&gt;
* [[Papers_and_Reports | Citing BoofCV]]&lt;br /&gt;
* [https://arxiv.org/abs/2110.13793 Chessboard X-Corner Detector]&lt;br /&gt;
* Assisted Calibration (to be written)&lt;br /&gt;
&lt;br /&gt;
= Shameless Promotion = &lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Ninox360_icon_logo_moto.png|400px|link=https://www.ninox360.com]]&lt;br /&gt;
{|  width=&amp;quot;600pt&amp;quot; &lt;br /&gt;
|&lt;br /&gt;
* Support developers of BoofCV&lt;br /&gt;
* Specialized in manufacturing and warehouse automation&lt;br /&gt;
* Managed smart camera systems so you don&amp;#039;t need to deal with all the hard stuff&lt;br /&gt;
* Highly customized solutions for your application&lt;br /&gt;
* Will design and implement industrial calibration systems customized for your applications&lt;br /&gt;
* Proprietary in-situ self calibration technology&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Coordinate Systems =&lt;br /&gt;
&lt;br /&gt;
Please refer to [[Coordinate_Systems|Coordinate System]] page and understand how BoofCV defines its coordinate system.&lt;br /&gt;
&lt;br /&gt;
= The Calibration Process =&lt;br /&gt;
&lt;br /&gt;
In this section, the camera calibration procedure is broken down into steps and explained.  Almost identical steps are followed for calibration a single camera or a stereo camera system.  First a quick overview:&lt;br /&gt;
&lt;br /&gt;
# Select a pattern, download (or create your own), and print&lt;br /&gt;
# Mount the pattern onto a rigid flat surface&lt;br /&gt;
# Take many pictures of the target at different orientations and distances&lt;br /&gt;
# Download pictures to compute and select ones that are in focus&lt;br /&gt;
# Use provided examples to automatically detect calibration target and compute parameters&lt;br /&gt;
# Move calibration file to a safe location&lt;br /&gt;
&lt;br /&gt;
Which calibration target you use is a matter of personal preference.  Chessboard patterns tend to produce slightly more accurate results.&lt;br /&gt;
&lt;br /&gt;
== Selecting Calibration Target ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Different types of supported planar calibration grids&amp;quot; heights=150 widths=125 &amp;gt;&lt;br /&gt;
File:Calibration letter chessboard 7x5.png|Chessboard&lt;br /&gt;
File:Calibration letter squaregrid 5x4.png|Square Grid&lt;br /&gt;
File:Calibration letter circlehex 20x24.png|Circle Hexagonal Grid&lt;br /&gt;
File:Calibration letter circlegrid 17x12.png|Circle Regular Grid&lt;br /&gt;
File:Ecocheck_9x7n1.png|ECoCheck&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Name&lt;br /&gt;
| Multi-Camera&lt;br /&gt;
| Blur&lt;br /&gt;
| Border&lt;br /&gt;
| Fisheye&lt;br /&gt;
|-&lt;br /&gt;
| Chessboard || || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
|Square Grid || || || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| Circle Hexagonal Grid || || || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Circle Regular Grid || || || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| ECoCheck || Yes || Yes || Yes || Yes&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Multi-Camera&amp;#039;&amp;#039;&amp;#039; indicates the pattern is appropriate to use for multi-camera calibration as the target can be uniquely identified even when it&amp;#039;s partially visible. &lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Border&amp;#039;&amp;#039;&amp;#039; means the landmarks can be detected right up the image border.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Blur&amp;#039;&amp;#039;&amp;#039; means its resilient to blur. If not resilient then the accuracy will degrade linearly to the blur magnitude. This is particularly important with high resolution images which almost always have blur. &lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;fisheye&amp;#039;&amp;#039;&amp;#039; means it can provide accurate landmark locations even under fisheye distortion.&lt;br /&gt;
&lt;br /&gt;
For multi-camera calibration, ECoCheck is the recommended target type since its a self-identifying pattern and due to the encoded binary patterns you can identify uniquely each landmark even when obstructed. For single camera calibration then either chessboard of ECoCheck can be used as they have symmetry counter acts shrinking caused by blur. The other target types will degrade in accuracy when there is any blur or under lens distortion. Unless you are very careful there will almost always be some blur from being out of focus or motion. This issue has been exaggerated as the resolutions of cameras has increased.&lt;br /&gt;
&lt;br /&gt;
== Obtaining Targets PDFs ==&lt;br /&gt;
&lt;br /&gt;
The first step to creating a calibration target is downloading or creating your own PDF then printing it. After printing you will need to mount the printed document on a rigid board, discussed in the next section&lt;br /&gt;
&lt;br /&gt;
* Create targets in your browser and save as PDF. ([https://www.ninox360.com/calibration-targets link])&lt;br /&gt;
* For a list of readily printable calibration targets see the [[Camera_Calibration_Targets|Calibration Targets]] page.  &lt;br /&gt;
* The [[Camera_Calibration_Targets|Calibration Targets]] page also provides instructions on using a BoofCV application to generate your own custom targets.&lt;br /&gt;
* Instructions for how to create your own arbitrary calibration target for any sized paper can also be found at the [[Camera_Calibration_Targets|Calibration Targets]] page.&lt;br /&gt;
** [https://youtu.be/TGg-xgTyaU8?t=604 YouTube Video Showing GUI Application]&lt;br /&gt;
&lt;br /&gt;
== Mounting and Testing ==&lt;br /&gt;
&lt;br /&gt;
After printing, the target needs to be mounted on a rigid flat surface.  Any warping will decrease calibration accuracy.  An ideal surface will be rigid and smooth.  [http://www.amazon.com/gp/product/B000KNL4RK/ref=as_li_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=B000KNL4RK&amp;amp;linkCode=as2&amp;amp;tag=boofcv-20&amp;amp;linkId=FZWYY2AOFVCIYOOF Thick foam poster board] is easily obtainable and works well.  I&amp;#039;ve also used [http://amzn.to/1kIedjn clipboards] with some minor modifications.  Cardboard is OK if high precision isn&amp;#039;t required well.  For a well made target and a decent camera reprojection error is typically around 0.1 pixels.&lt;br /&gt;
&lt;br /&gt;
You should now do a quick test to make sure you did everything correctly and that the software can detect your new target. If you have never done camera calibration before this is also a good way to learn what you should not do when taking your photos for calibration. If you have a webcam installed on your compute this test is easy. To do the quick test simply launch the [[Tutorial_Camera_Calibration#Webcam_Assisted|assisted camera calibration app]], configure it for your target type, and see if detects the target. &lt;br /&gt;
&lt;br /&gt;
Detection Trouble Shooting:&lt;br /&gt;
&lt;br /&gt;
* Is your hand touching the calibration pattern? Move your hand.&lt;br /&gt;
* Try to ensure the lighting is diffuse, uniform, and avoid glare.&lt;br /&gt;
* Does the target your printed look like the target in the preview? If not adjust the settings until it does.&lt;br /&gt;
* Harsh shadows can sometimes cause problems.&lt;br /&gt;
* Some target types require the entire target to be inside the camera&amp;#039;s FOV&lt;br /&gt;
&lt;br /&gt;
Quick comment about target row/column specifications. How rows and columns in a target is counted isn&amp;#039;t universally agreed upon. In BoofCV we always count the squares or circles. To help you the PDF generator will the target&amp;#039;s name and characteristics in the lower left hand corner.&lt;br /&gt;
&lt;br /&gt;
== Calibration Target Placement ==&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[[File:Calibration placement.jpg|600px|Position the calibration target so that it covers the entire image, especially the image border and corners.  The assisted calibration tool can help you do this.]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When collecting calibration images it is best to take a diverse set of in focus image which cover the entire image, especially the image border.  An example of how one can do this is down in the figure above.  One problem when calibrating a camera is that the residual error can&amp;#039;t be trusted as a way to verify correctness.  For example, if all the pictures are taken in one region the results will be biased, even if the residual error is low.  Also avoid extreme angles or changes distance should be avoided.  &lt;br /&gt;
&lt;br /&gt;
A good way to check to see if calibration was done correctly is to see if straight edges are straight.  In an undistorted image try moving a ruler to the image border and see if its warped.  For stereo images you can see if rectification is correct by clicking on an easily recognizable feature and seeing if it is at the same y-coordinate in the other image.&lt;br /&gt;
&lt;br /&gt;
= Supported Camera Models =&lt;br /&gt;
&lt;br /&gt;
Camera models are provided for narrow (normal cameras, &amp;lt; 180 degrees FOV), and wide (no limit on FOV, a.k.a fisheye). Narrow camera models take in points that are in pixels &amp;lt;math&amp;gt;(x,y)&amp;lt;/math&amp;gt; or normalized image coordinates &amp;lt;math&amp;gt;(x_n,y_n)&amp;lt;/math&amp;gt;. Normalized image coordinates represent a 3D pointing vector with the implicit assumption that &amp;lt;math&amp;gt;z=1&amp;lt;/math&amp;gt;, which is what limits the FOV. Wide camera models use spherical coordinates &amp;lt;math&amp;gt;(x_s,y_s,z_s)&amp;lt;/math&amp;gt; instead since they do not make the assumption that visible points always appear in front of the camera.&lt;br /&gt;
&lt;br /&gt;
If you use the calibration application you can decide if you want to save the found parameters in BoofCV and OpenCV formats. OpenCV is only provided for Brown as the other camera models are not identical between the two libraries.&lt;br /&gt;
&lt;br /&gt;
== Pinhole Model ==&lt;br /&gt;
&lt;br /&gt;
This is the most basic camera model and does not model lens distortion. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left[ \begin{array}{c} x \\ y \\ 1 \end{array} \right] = \left[ \begin{array}{ccc} f_x &amp;amp; skew &amp;amp; cx \\ 0 &amp;amp; f_y &amp;amp; c_y \\ 0 &amp;amp; 0 &amp;amp; 1 \end{array} \right]&lt;br /&gt;
\left[ \begin{array}{c} x_n \\ y_n \\ 1 \end{array} \right]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the 3x3 is the intrinsic camera matrix and is also known as &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Brown Model ==&lt;br /&gt;
&lt;br /&gt;
The Brown camera model [1] is the most popular and models lens distortion radial and tangential (&amp;quot;decentering&amp;quot;) distortion. It is appropriate for most lenses with a FOV less than 180 degrees.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left[ \begin{array}{c} x \\ y \\ 1 \end{array} \right] \sim K \left[ \begin{array}{c} x_d \\ y_d \\ 1 \end{array} \right]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left[ \begin{array}{c}x_d \\ y_d \end{array} \right] = \sum_{i=0}^{i&amp;lt;rad} a_i r^{2i} \left[ \begin{array}{c}x_n \\ y_n \end{array} \right] + \left[ \begin{array}{c} 2t_1 x_n y_n + t_2(r^2 + 2x^2_n)  \\ t_1(r^2 + 2y^2_n) + 2t_2 x_n y_n \end{array} \right]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;r=\sqrt{x_n^2 + y_n^2}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;a_i&amp;lt;/math&amp;gt; are radial distortion coefficients, and &amp;lt;math&amp;gt;(t_1, t_2)&amp;lt;/math&amp;gt; are the tangential coefficients.&lt;br /&gt;
&lt;br /&gt;
== Universal Omni Model ==&lt;br /&gt;
[[File:Camera_model_universal_diagram.png|center|400px|Image formation from universal omni camera model]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Universal Omni [2] camera model adds a mirror offset &amp;lt;math&amp;gt;\epsilon&amp;lt;/math&amp;gt; to the Brown model and can model parabola, hyperbola, ellipse, and plane mirror equations. The only difference from the Brown camera model is how it converts spherical coordinates into normalized image coordinates:&lt;br /&gt;
&amp;lt;math&amp;gt;\left[ \begin{array}{c}x_n \\ y_n \end{array} \right] =&lt;br /&gt;
\left[ \begin{array}{c}x_s/(z_s+\epsilon) \\ y_s/(z_s+\epsilon) \end{array} \right]&amp;lt;/math&amp;gt;&lt;br /&gt;
After this step it has identical equations to Brown.&lt;br /&gt;
&lt;br /&gt;
== Kannala-Brandt Model ==&lt;br /&gt;
&lt;br /&gt;
Kannala-Brandt [3] is a wide camera model that supports perspective, stereographic, equidistance, equisolid angle, and orthogonal projection models. BoofCV&amp;#039;s implementation is a bit unusual in that it supports the full camera model as presented in [3], with symmetric and asymmetric distortion terms. Most libraries just support the Radially symmetric.&lt;br /&gt;
&lt;br /&gt;
Radially Symmetric Model:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;r(\theta) = k_1\theta + k_2\theta^3 + k_3 \theta^5 + \cdots&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left[ \begin{array}{c}x_n \\ y_n \end{array} \right] = r(\theta)&lt;br /&gt;
\left[ \begin{array}{c}\cos \phi \\ \sin \phi \end{array}  \right]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Radial Distortion Model:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta_r(\theta, \phi) = (l_1 \phi + l_2 \phi^3 + l_3 \phi^5)(i_1 \cos \phi + i_2 \sin \phi + i_3 \cos 2\phi + i_4 \sin 2\phi)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tangential Distortion Model:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta_t(\theta, \phi) = (m_1 \phi + m_2 \phi^3 + m_3 \phi^5)(j_1 \cos \phi + j_2 \sin \phi + j_3 \cos 2\phi + j_4 \sin 2\phi)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Full Camera Model:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_d = r(\theta)u_r(\phi) + \Delta_r(\theta, \phi) u_r(\phi) + \Delta_t(\theta, \phi) u_\phi(\phi)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;x_d&amp;lt;/math&amp;gt; are the distorted normalized image coordinates, &amp;lt;math&amp;gt;u_r(\phi)&amp;lt;/math&amp;gt; is a unit vector in radial direction, and &amp;lt;math&amp;gt;u_\phi(\phi)&amp;lt;/math&amp;gt; is a unit vector in tangential direction.&lt;br /&gt;
&lt;br /&gt;
== Appendix ==&lt;br /&gt;
&lt;br /&gt;
* [1] Brown, D. C. &amp;quot;Decentering distortion of lenses, photometric engineering.&amp;quot; (1966): 444-462.&lt;br /&gt;
* [2] Christopher Mei, and Patrick Rives. &amp;quot;Single view point omnidirectional camera calibration from planar grids.&amp;quot; ICRA 2007.&lt;br /&gt;
* [3] Kannala, J., and Brandt, S. S. &amp;quot;A generic camera model and calibration method for conventional, wide-angle, and fish-eye lenses&amp;quot; 2006&lt;br /&gt;
&lt;br /&gt;
= Calibration Applications =&lt;br /&gt;
&lt;br /&gt;
BoofCV comes with applications for camera calibrations which can be used as either commandline tools or GUI applications. The easiest way to use them is to launch the Applications jar then click on the calibration tool you wish to use. The commandline interface provide access to all the options and allow you to select images using Glob or Regex commands. For those who wish to use BoofCV to detect calibration landmarks but want another tool to do the actual calibration, you can save the landmarks detected for each image to a file. &lt;br /&gt;
&lt;br /&gt;
[[File:Boofcv_applications.png|center|400px|Screen shot of applications master app that let&amp;#039;s you select the calibration tool using a GUI]]&lt;br /&gt;
&lt;br /&gt;
To launch the tools from the command line you can use the following about building/downloading &amp;quot;applications.jar&amp;quot;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
java -jar applications.jar CameraCalibrationMono&lt;br /&gt;
java -jar applications.jar CameraCalibrationStereo&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Links&lt;br /&gt;
* [[Applications|Download or Build Applications]]&lt;br /&gt;
&lt;br /&gt;
== Webcam Assisted ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[[file:Youtube_calibration.jpg|link=https://www.youtube.com/watch?v=3SWX1iQRbsg|Demonstration Video]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This live webcam calibration application is interactive and designed to ensure that your image set will be in focus, collected around the image border, and have sufficient geometric diversity.  This is accomplished by; 1) guiding you to specific locations inside the image, 2) mathematically examining the current solution to see if it has sufficient geometric diversity and will converge, and 3) collecting multiple images at each location but only using the one which is the most in focus. Once you are done capturing images you&amp;#039;re then presented with another view where you can view the results for individual images and across the whole dataset.&lt;br /&gt;
&lt;br /&gt;
All data is saved disk along with the found intrinsic camera parameters. Please view the video above before proceeding.  &lt;br /&gt;
&lt;br /&gt;
Usage Examples:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
java -jar applications.jar CameraCalibrationMono --Camera=0 --Resolution=640:480 CHESSBOARD --Grid=7:5&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The arguments specify which camera to use, it&amp;#039;s resolution, type of calibration target, and the calibration target&amp;#039;s shape. Results will be stored in the &amp;quot;calibration_data&amp;quot; directory. You can also use the --GUI flag and graphically select a camera and configure the calibration target.&lt;br /&gt;
&lt;br /&gt;
=== Custom Video Sources ===&lt;br /&gt;
&lt;br /&gt;
The assisted calibration by default uses video feed from [http://webcam-capture.sarxos.pl/ Webcam Capture].  With a little bit of coding it&amp;#039;s easy to add video sources from really anything as long as you can get a BufferedImage.  Take a look at [https://github.com/lessthanoptimal/BoofCV/blob/master/applications/src/boofcv/app/CameraCalibration.java CameraCalibration].&lt;br /&gt;
&lt;br /&gt;
== Monocular Calibration ==&lt;br /&gt;
&lt;br /&gt;
BoofCV provides both command line tools and a GUI application for calibrating different types of cameras. A screenshot is shown below of the application. The application is designed to help you visually verify results quickly and accurately while also providing statistical results. Camera model parameters and target type can both be easily changed in the GUI. Bad features and images can also be removed so that they won&amp;#039;t corrupt your results. The latest instruction for the command line tool can be found by typing &amp;quot;--Help&amp;quot; as a flag.&lt;br /&gt;
&lt;br /&gt;
If you would like to use a pre-built application it can be downloaded from here:&lt;br /&gt;
&lt;br /&gt;
* [[Applications#Camera_Calibration|Pre-build Calibration Application]]&lt;br /&gt;
* [https://youtu.be/wgPzlokxbXw YouTube video showing application]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That will print out instructions.  There are two methods of input with that application.  Images from a directory or live video feed from a webcam.  &lt;br /&gt;
&lt;br /&gt;
[[File:Calibration_app_mono.jpg|center|frame|link=https://youtu.be/wgPzlokxbXw|Both fisheye and regular cameras can be calibrated using the same application. Target type and camera model can both be changed. Bad features and images can be removed.]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Trouble Shooting&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* [[Manual#Build|General build problems]]&lt;br /&gt;
&lt;br /&gt;
== Stereo Calibration ==&lt;br /&gt;
&lt;br /&gt;
* [https://youtu.be/wgPzlokxbXw?t=665 YouTube video showing application]&lt;br /&gt;
&lt;br /&gt;
[[File:Calibration_app_stereo.jpg|center|frame|link=https://youtu.be/wgPzlokxbXw?t=665|Screen shot of the stereo calibration application. Camera model and target type can be changed in the GUI. Contains tools to verify that recitification was done correctly. Landmarks and images can be removed.]]&lt;br /&gt;
&lt;br /&gt;
== Command Line Interface ==&lt;br /&gt;
&lt;br /&gt;
The same applications can be used to calibrate from a set of previously collected images saved into a directory.  By default a GUI visualizing the results is displayed, but this can be turned off.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
java -jar applications.jar  CameraCalibration --Directory=images/ CHESSBOARD --Grid=7:5&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Results will be stored in the &amp;quot;calibration_data&amp;quot; directory.  This includes found calibration parameters along with the collected images. If using the command line isn&amp;#039;t your thing then use the --GUI flag and select the input directory.&lt;br /&gt;
&lt;br /&gt;
== Calibration from Source Code ==&lt;br /&gt;
&lt;br /&gt;
Coding up your own software to load and process calibration images is also easy, but more tedious.  The calibration application also doesn&amp;#039;t support stereo cameras yet.  &lt;br /&gt;
&lt;br /&gt;
Example Code:&lt;br /&gt;
# [[Example_Calibrate_Planar_Mono| Calibrate Monocular Camera]]&lt;br /&gt;
# [[Example_Calibrate_Planar_Fisheye| Calibrate Fisheye Camera]]&lt;br /&gt;
# [[Example_Calibrate_Planar_Stereo| Calibrate Stereo Camera]]&lt;br /&gt;
&lt;br /&gt;
= Batch Undistortion Tools =&lt;br /&gt;
&lt;br /&gt;
== Removing Lens Distortion from Images ==&lt;br /&gt;
&lt;br /&gt;
Most computer vision algorithms assume a pin hole camera model.  Undistorting an image allows you to treat the image like a pin-hole camera and can make it visually more appearing since the borders are no longer heavily distorted.  This operation can be relatively expensive.  Internally most algorithm in BoofCV detect features in the distorted image then undistort individual features&lt;br /&gt;
&lt;br /&gt;
Example Code:&lt;br /&gt;
# [[Example_Remove_Lens_Distortion| Remove Lens Distortion]]&lt;br /&gt;
&lt;br /&gt;
== Stereo Rectification ==&lt;br /&gt;
&lt;br /&gt;
Stereo rectification is the process of distorting two images such that both their epipoles are at infinity, typically along the x-axis.  When this happens the epipolar lines are all parallel to each other simplifying the problem of finding feature correspondences to searching along the image axis.  Many stereo algorithms require images to be rectified first.&lt;br /&gt;
&lt;br /&gt;
Rectification can be done on calibrated or uncalibrated images.  Calibration in this case refers to the stereo baseline (extrinsic parameters between two cameras) to be known. Although in practice it is often required that lens distortion be removed from the images even in the &amp;quot;uncalibrated&amp;quot; case.&lt;br /&gt;
&lt;br /&gt;
The uncalibrated case can be done using automatically detected and associated features, however it is much tricker to get right than the calibrated case.  Any small association error will cause a large error in rectification.  Even if a state of the art and robust feature is used (e.g. SURF) and matches are pruned using the epipolar constraint, this alone will not be enough.  Additional knowledge of the scene needs to be taken in account.&lt;br /&gt;
&lt;br /&gt;
# [[Example_Rectification_Calibrated| Rectify Calibrated Stereo]]&lt;br /&gt;
# [[Example_Rectification_Uncalibrated| Rectify Uncalibrated Stereo]]&lt;br /&gt;
&lt;br /&gt;
= OpenCV Friendly =&lt;br /&gt;
&lt;br /&gt;
BoofCV can read and write YAML camera calibration files in OpenCV&amp;#039;s format. You can calibrate your camera in BoofCV using the assisted calibration app and then use its results in OpenCV!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
CameraPinholeRadial param = CalibrationIO.loadOpenCV(&amp;quot;boofcv_intrinsic.yaml&amp;quot;));&lt;br /&gt;
UtilOpenCV.saveOpenCV(param, &amp;quot;opencv_intrinsic.yaml&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
where &amp;quot;boofcv_intrinsic.yaml&amp;quot; is file containing intrinsic camera parameters in BoofCV format and &amp;quot;opencv_intrinsic.yaml&amp;quot; is a file in OpenCV format.&lt;br /&gt;
&lt;br /&gt;
= Other Camera Calibration Tools =&lt;br /&gt;
&lt;br /&gt;
Here&amp;#039;s a list of other tools for camera calibration, in alphabetical order. If you know of other tools that should be listed here post the suggestion on the [https://groups.google.com/g/boofcv?pli=1 message board].&lt;br /&gt;
&lt;br /&gt;
* [http://www.vision.caltech.edu/bouguetj/calib_doc/htmls/example.html CalTech&amp;#039;s Matlab Toolbox:]&lt;br /&gt;
* [http://mrcal.secretsauce.net/ mrcal (NASA/JPL)]&lt;br /&gt;
* [https://docs.opencv.org/4.5.3/dc/dbb/tutorial_py_calibration.html OpenCV]&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Camera_Calibration_Targets&amp;diff=3245</id>
		<title>Camera Calibration Targets</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Camera_Calibration_Targets&amp;diff=3245"/>
		<updated>2022-11-10T16:11:23Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Online Editor ==&lt;br /&gt;
&lt;br /&gt;
A web version ([https://www.ninox360.com/calibration-targets link]) of the desktop has been created and hosted by [https://www.ninox360.com Ninox 360]. It has almost all the features of the desktop application but runs in your browser.&lt;br /&gt;
&lt;br /&gt;
[[File:Online_calibration_target_generator.jpg|300px|link=https://www.ninox360.com/calibration-targets]]&lt;br /&gt;
&lt;br /&gt;
== Desktop Editor ==&lt;br /&gt;
&lt;br /&gt;
BoofCV provides an application for generating your own custom calibration target. It allows you to specify which pattern you wish to use, the paper, and other specifications. A command line interface as well as a graphics interface are provided. The graphical interface gives you live preview as you adjust settings.&lt;br /&gt;
&lt;br /&gt;
* [https://youtu.be/qMTtdiujAtQ?t=559 Video demonstration of command-line]&lt;br /&gt;
* [https://youtu.be/TGg-xgTyaU8?t=604 Video demonstration of GUI Application]&lt;br /&gt;
* [[Applications#Create_Calibration_Fiducials|Instructions for installing pre-built application]]&lt;br /&gt;
* Below are instructions for building it yourself from BoofCV&amp;#039;s source code&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd boofcv&lt;br /&gt;
./gradlew applicationsJar&lt;br /&gt;
java -jar applications/applications.jar CreateCalibrationTarget&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The last line above will run the application with no arguments. This will print out up to date instructions.  At the end of the instructions are examples for each target type on letter sized paper. If you wish to have a GUI when creating your calibration target add the --GUI flag. The GUI doesn&amp;#039;t have all the options which the command line has.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
java -jar applications/applications.jar CreateCalibrationTarget --GUI&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Downloadable Targets ==&lt;br /&gt;
&lt;br /&gt;
Instead of creating a custom target you can use one of the pregenerated targets for standard document sizes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Printable Calibration Targets: US Standard Paper&lt;br /&gt;
!Link&lt;br /&gt;
!Target Type&lt;br /&gt;
!Paper Size&lt;br /&gt;
!Shape&lt;br /&gt;
!Square/Circle Size&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Ecocheck_9x7n1.png|60px|link=http://boofcv.org/notwiki/calibration/letter_ecocheck_9x7n1.pdf]]&lt;br /&gt;
| ECoCheck 9x7n1&lt;br /&gt;
| Letter&lt;br /&gt;
| 9 by 7&lt;br /&gt;
| 3cm&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Calibration_letter_chessboard_7x5.png|60px|link=http://boofcv.org/notwiki/calibration/letter_chessboard.pdf]]&lt;br /&gt;
| Chessboard&lt;br /&gt;
| Letter&lt;br /&gt;
| 7 by 5&lt;br /&gt;
| 3cm&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Calibration_letter_squaregrid_5x4.png|60px|link=http://boofcv.org/notwiki/calibration/letter_squaregrid.pdf]]&lt;br /&gt;
| Square Grid&lt;br /&gt;
| Letter&lt;br /&gt;
| 5 by 4&lt;br /&gt;
| w=3cm s=2cm&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Calibration_letter_circlehex_20x24.png|60px|link=http://boofcv.org/notwiki/calibration/letter_circlehex.pdf Link]]&lt;br /&gt;
| Circle Hexagonal Grid&lt;br /&gt;
| Letter&lt;br /&gt;
| 20 by 24&lt;br /&gt;
| diam=1cm, d=1.5cm&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Calibration_letter_circlehex_20x24.png|60px|link=http://boofcv.org/notwiki/calibration/letter_circlegrid.pdf Link]]&lt;br /&gt;
| Circle Regular Grid&lt;br /&gt;
| Letter&lt;br /&gt;
| 17 by 12&lt;br /&gt;
| diam=1cm, d=1.5cm&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Printable Calibration Targets: Metric&lt;br /&gt;
!Link&lt;br /&gt;
!Target Type&lt;br /&gt;
!Paper Size&lt;br /&gt;
!Shape&lt;br /&gt;
!Square/Circle Size&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Ecocheck_9x7n1.png|60px|link=http://boofcv.org/notwiki/calibration/A4_ecocheck_10x7n1.pdf]]&lt;br /&gt;
| ECoCheck 10x7n1&lt;br /&gt;
| A4&lt;br /&gt;
| 10 by 7&lt;br /&gt;
| 3cm&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Calibration_A4_chessboard_9x6.png|60px|link=http://boofcv.org/notwiki/calibration/A4_chessboard.pdf]]&lt;br /&gt;
| Chessboard&lt;br /&gt;
| A4&lt;br /&gt;
| 9 by 6&lt;br /&gt;
| 3cm&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Calibration_A4_squaregrid.png|60px|link=http://boofcv.org/notwiki/calibration/A4_squaregrid.pdf]]&lt;br /&gt;
| Square Grid&lt;br /&gt;
| A4&lt;br /&gt;
| 6 by 4&lt;br /&gt;
| w=3cm s=1.5cm&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Calibration_A4_circlehex.png|60px|link=http://boofcv.org/notwiki/calibration/A4_circlehex.pdf Link]]&lt;br /&gt;
| Circle Hexagonal Grid&lt;br /&gt;
| A4&lt;br /&gt;
| 20 by 24&lt;br /&gt;
| diam=1cm, d=1.5cm&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Calibration_A4_circlegrid.png|60px|link=http://boofcv.org/notwiki/calibration/A4_circlegrid.pdf Link]]&lt;br /&gt;
| Circle Regular Grid&lt;br /&gt;
| A4&lt;br /&gt;
| 18 by 12&lt;br /&gt;
| diam=1cm, d=1.5cm&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Shape for chessboard includes black and white squares&lt;br /&gt;
* Shape for square grid is only the black squares&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;WHEN PRINTING CALIBRATION TARGETS MAKE SURE YOUR PRINTER DOES NOT RESCALE THE DOCUMENTS!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;After printing use a ruler to make sure it&amp;#039;s the correct size&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Camera_Calibration_Targets&amp;diff=3244</id>
		<title>Camera Calibration Targets</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Camera_Calibration_Targets&amp;diff=3244"/>
		<updated>2022-11-10T16:10:37Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Online Editor ==&lt;br /&gt;
&lt;br /&gt;
A web version ([https://www.ninox360.com/calibration-targets link]) of the desktop has been created and hosted by [https://ninox360.com Ninox 360]. It has almost all the features of the desktop application but runs in your browser.&lt;br /&gt;
&lt;br /&gt;
[[File:Online_calibration_target_generator.jpg|300px|link=https://www.ninox360.com/calibration-targets]]&lt;br /&gt;
&lt;br /&gt;
== Desktop Editor ==&lt;br /&gt;
&lt;br /&gt;
BoofCV provides an application for generating your own custom calibration target. It allows you to specify which pattern you wish to use, the paper, and other specifications. A command line interface as well as a graphics interface are provided. The graphical interface gives you live preview as you adjust settings.&lt;br /&gt;
&lt;br /&gt;
* [https://youtu.be/qMTtdiujAtQ?t=559 Video demonstration of command-line]&lt;br /&gt;
* [https://youtu.be/TGg-xgTyaU8?t=604 Video demonstration of GUI Application]&lt;br /&gt;
* [[Applications#Create_Calibration_Fiducials|Instructions for installing pre-built application]]&lt;br /&gt;
* Below are instructions for building it yourself from BoofCV&amp;#039;s source code&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd boofcv&lt;br /&gt;
./gradlew applicationsJar&lt;br /&gt;
java -jar applications/applications.jar CreateCalibrationTarget&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The last line above will run the application with no arguments. This will print out up to date instructions.  At the end of the instructions are examples for each target type on letter sized paper. If you wish to have a GUI when creating your calibration target add the --GUI flag. The GUI doesn&amp;#039;t have all the options which the command line has.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
java -jar applications/applications.jar CreateCalibrationTarget --GUI&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Downloadable Targets ==&lt;br /&gt;
&lt;br /&gt;
Instead of creating a custom target you can use one of the pregenerated targets for standard document sizes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Printable Calibration Targets: US Standard Paper&lt;br /&gt;
!Link&lt;br /&gt;
!Target Type&lt;br /&gt;
!Paper Size&lt;br /&gt;
!Shape&lt;br /&gt;
!Square/Circle Size&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Ecocheck_9x7n1.png|60px|link=http://boofcv.org/notwiki/calibration/letter_ecocheck_9x7n1.pdf]]&lt;br /&gt;
| ECoCheck 9x7n1&lt;br /&gt;
| Letter&lt;br /&gt;
| 9 by 7&lt;br /&gt;
| 3cm&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Calibration_letter_chessboard_7x5.png|60px|link=http://boofcv.org/notwiki/calibration/letter_chessboard.pdf]]&lt;br /&gt;
| Chessboard&lt;br /&gt;
| Letter&lt;br /&gt;
| 7 by 5&lt;br /&gt;
| 3cm&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Calibration_letter_squaregrid_5x4.png|60px|link=http://boofcv.org/notwiki/calibration/letter_squaregrid.pdf]]&lt;br /&gt;
| Square Grid&lt;br /&gt;
| Letter&lt;br /&gt;
| 5 by 4&lt;br /&gt;
| w=3cm s=2cm&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Calibration_letter_circlehex_20x24.png|60px|link=http://boofcv.org/notwiki/calibration/letter_circlehex.pdf Link]]&lt;br /&gt;
| Circle Hexagonal Grid&lt;br /&gt;
| Letter&lt;br /&gt;
| 20 by 24&lt;br /&gt;
| diam=1cm, d=1.5cm&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Calibration_letter_circlehex_20x24.png|60px|link=http://boofcv.org/notwiki/calibration/letter_circlegrid.pdf Link]]&lt;br /&gt;
| Circle Regular Grid&lt;br /&gt;
| Letter&lt;br /&gt;
| 17 by 12&lt;br /&gt;
| diam=1cm, d=1.5cm&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Printable Calibration Targets: Metric&lt;br /&gt;
!Link&lt;br /&gt;
!Target Type&lt;br /&gt;
!Paper Size&lt;br /&gt;
!Shape&lt;br /&gt;
!Square/Circle Size&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Ecocheck_9x7n1.png|60px|link=http://boofcv.org/notwiki/calibration/A4_ecocheck_10x7n1.pdf]]&lt;br /&gt;
| ECoCheck 10x7n1&lt;br /&gt;
| A4&lt;br /&gt;
| 10 by 7&lt;br /&gt;
| 3cm&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Calibration_A4_chessboard_9x6.png|60px|link=http://boofcv.org/notwiki/calibration/A4_chessboard.pdf]]&lt;br /&gt;
| Chessboard&lt;br /&gt;
| A4&lt;br /&gt;
| 9 by 6&lt;br /&gt;
| 3cm&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Calibration_A4_squaregrid.png|60px|link=http://boofcv.org/notwiki/calibration/A4_squaregrid.pdf]]&lt;br /&gt;
| Square Grid&lt;br /&gt;
| A4&lt;br /&gt;
| 6 by 4&lt;br /&gt;
| w=3cm s=1.5cm&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Calibration_A4_circlehex.png|60px|link=http://boofcv.org/notwiki/calibration/A4_circlehex.pdf Link]]&lt;br /&gt;
| Circle Hexagonal Grid&lt;br /&gt;
| A4&lt;br /&gt;
| 20 by 24&lt;br /&gt;
| diam=1cm, d=1.5cm&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Calibration_A4_circlegrid.png|60px|link=http://boofcv.org/notwiki/calibration/A4_circlegrid.pdf Link]]&lt;br /&gt;
| Circle Regular Grid&lt;br /&gt;
| A4&lt;br /&gt;
| 18 by 12&lt;br /&gt;
| diam=1cm, d=1.5cm&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Shape for chessboard includes black and white squares&lt;br /&gt;
* Shape for square grid is only the black squares&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;WHEN PRINTING CALIBRATION TARGETS MAKE SURE YOUR PRINTER DOES NOT RESCALE THE DOCUMENTS!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;After printing use a ruler to make sure it&amp;#039;s the correct size&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=File:Online_calibration_target_generator.jpg&amp;diff=3243</id>
		<title>File:Online calibration target generator.jpg</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=File:Online_calibration_target_generator.jpg&amp;diff=3243"/>
		<updated>2022-11-10T16:08:25Z</updated>

		<summary type="html">&lt;p&gt;Peter: Peter uploaded a new version of File:Online calibration target generator.jpg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=File:Online_calibration_target_generator.jpg&amp;diff=3242</id>
		<title>File:Online calibration target generator.jpg</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=File:Online_calibration_target_generator.jpg&amp;diff=3242"/>
		<updated>2022-11-10T16:07:31Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Example_Stereo_Mesh&amp;diff=3241</id>
		<title>Example Stereo Mesh</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Example_Stereo_Mesh&amp;diff=3241"/>
		<updated>2022-09-03T02:49:42Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;gallery heights=350 widths=350 perrow=4 &amp;gt;&lt;br /&gt;
File:Example_disparity_mesh_cloudcompare.jpg| Mesh viewed in Cloud Compare and generated from a stereo disparity image.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Shows you how to convert a disparity image into a 3D mesh. Meshes are typically easier to view in 3rd party libraries.&lt;br /&gt;
&lt;br /&gt;
Example Code:&lt;br /&gt;
* [https://github.com/lessthanoptimal/BoofCV/blob/v0.41/examples/src/main/java/boofcv/examples/stereo/ExampleStereoMesh.java ExampleStereoMesh.java]&lt;br /&gt;
&lt;br /&gt;
Concepts:&lt;br /&gt;
* Stereo Disparity&lt;br /&gt;
* Filtering&lt;br /&gt;
&lt;br /&gt;
Related Examples:&lt;br /&gt;
* [[Example_Stereo_Disparity| Stereo Disparity]]&lt;br /&gt;
* [[Example Stereo Disparity 3D| Disparity to 3D Cloud]]&lt;br /&gt;
&lt;br /&gt;
= Example Code =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Example showing how you can convert a disparity image into a 3D mesh.&lt;br /&gt;
 *&lt;br /&gt;
 * @author Peter Abeles&lt;br /&gt;
 */&lt;br /&gt;
public class ExampleStereoMesh {&lt;br /&gt;
	static int disparityMin = 5;&lt;br /&gt;
	static int disparityRange = 60;&lt;br /&gt;
&lt;br /&gt;
	public static void main( String[] args ) {&lt;br /&gt;
		String calibDir = UtilIO.pathExample(&amp;quot;calibration/stereo/Bumblebee2_Chess/&amp;quot;);&lt;br /&gt;
		String imageDir = UtilIO.pathExample(&amp;quot;stereo/&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		StereoParameters param = CalibrationIO.load(new File(calibDir, &amp;quot;stereo.yaml&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
		// load and convert images into a BoofCV format&lt;br /&gt;
		BufferedImage origLeft = UtilImageIO.loadImage(imageDir, &amp;quot;sundial01_left.jpg&amp;quot;);&lt;br /&gt;
		BufferedImage origRight = UtilImageIO.loadImage(imageDir, &amp;quot;sundial01_right.jpg&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		GrayU8 distLeft = ConvertBufferedImage.convertFrom(origLeft, (GrayU8)null);&lt;br /&gt;
		GrayU8 distRight = ConvertBufferedImage.convertFrom(origRight, (GrayU8)null);&lt;br /&gt;
&lt;br /&gt;
		// rectify images&lt;br /&gt;
		GrayU8 rectLeft = distLeft.createSameShape();&lt;br /&gt;
		GrayU8 rectRight = distRight.createSameShape();&lt;br /&gt;
&lt;br /&gt;
		// Using a previous example, rectify then compute the disparity image&lt;br /&gt;
		RectifyCalibrated rectifier = ExampleStereoDisparity.rectify(distLeft, distRight, param, rectLeft, rectRight);&lt;br /&gt;
		GrayF32 disparity = ExampleStereoDisparity.denseDisparitySubpixel(&lt;br /&gt;
				rectLeft, rectRight, 3, disparityMin, disparityRange);&lt;br /&gt;
&lt;br /&gt;
		// Remove speckle and smooth the disparity image. Typically this results in a less chaotic 3D model&lt;br /&gt;
		var configSpeckle = new ConfigSpeckleFilter();&lt;br /&gt;
		configSpeckle.similarTol = 1.0f; // Two pixels are connected if their disparity is this similar&lt;br /&gt;
		configSpeckle.maximumArea.setFixed(200); // probably the most important parameter, speckle size&lt;br /&gt;
		DisparitySmoother&amp;lt;GrayU8, GrayF32&amp;gt; smoother =&lt;br /&gt;
				FactoryStereoDisparity.removeSpeckle(configSpeckle, GrayF32.class);&lt;br /&gt;
&lt;br /&gt;
		smoother.process(rectLeft, disparity, disparityRange);&lt;br /&gt;
&lt;br /&gt;
		// Put disparity parameters into a format that the meshing algorithm can understand&lt;br /&gt;
		var parameters = new DisparityParameters();&lt;br /&gt;
		parameters.disparityRange = disparityRange;&lt;br /&gt;
		parameters.disparityMin = disparityMin;&lt;br /&gt;
		PerspectiveOps.matrixToPinhole(rectifier.getCalibrationMatrix(), rectLeft.width, rectLeft.height, parameters.pinhole);&lt;br /&gt;
		parameters.baseline = param.getBaseline()/10;&lt;br /&gt;
&lt;br /&gt;
		// Convert the disparity image into a polygon mesh&lt;br /&gt;
		var alg = new DepthImageToMeshGridSample();&lt;br /&gt;
		alg.samplePeriod.setFixed(2);&lt;br /&gt;
		alg.processDisparity(parameters, disparity, /* max disparity jump */ 2);&lt;br /&gt;
		VertexMesh mesh = alg.getMesh();&lt;br /&gt;
&lt;br /&gt;
		// Specify the color of each vertex&lt;br /&gt;
		var colors = new DogArray_I32(mesh.vertexes.size());&lt;br /&gt;
		DogArray&amp;lt;Point2D_F64&amp;gt; pixels = alg.getVertexPixels();&lt;br /&gt;
		for (int i = 0; i &amp;lt; pixels.size; i++) {&lt;br /&gt;
			Point2D_F64 p = pixels.get(i);&lt;br /&gt;
			int v = rectLeft.get((int)p.x, (int)p.y);&lt;br /&gt;
			colors.add(v &amp;lt;&amp;lt; 16 | v &amp;lt;&amp;lt; 8 | v);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// Save results. Display using a 3rd party application&lt;br /&gt;
		try (OutputStream out = new FileOutputStream(&amp;quot;mesh.ply&amp;quot;)) {&lt;br /&gt;
			PointCloudIO.save3D(PointCloudIO.Format.PLY, mesh, colors, out);&lt;br /&gt;
		} catch (IOException e) {&lt;br /&gt;
			throw new RuntimeException(e);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Download&amp;diff=3240</id>
		<title>Download</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Download&amp;diff=3240"/>
		<updated>2022-09-03T02:21:02Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BoofCV is available from its central repository at Github or through periodic releases.  Below are links to the latest stable release hosted on SourceForge.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Latest Stable Release:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* [https://sourceforge.net/projects/boofcv/files/v0.41/ Jars and Source Code]&lt;br /&gt;
* [https://github.com/lessthanoptimal/BoofCV/blob/v0.41/change.txt Change Log]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Pre-Built Applications:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* [[Applications#Examples_and_Demonstrations| Examples and Demonstrations ]]&lt;br /&gt;
&lt;br /&gt;
If you encounter any problems getting BoofCV up and running, please let us know!  A bug might have slipped through testing or if the instructions are not clear we would like to know.&lt;br /&gt;
&lt;br /&gt;
= Java Version =&lt;br /&gt;
&lt;br /&gt;
To run BoofCV requires Java 11 and above. Building BoofCV requires Java 17, but if you use the build in Gradle script that is handled for you.&lt;br /&gt;
&lt;br /&gt;
Where to download the Java Virtual Machine&lt;br /&gt;
* https://www.azul.com/downloads/zulu/&lt;br /&gt;
* https://adoptopenjdk.net/&lt;br /&gt;
&lt;br /&gt;
NOTE: Version 0.39 and before maintained compatibility with Java 8. &lt;br /&gt;
&lt;br /&gt;
= Maven Central =&lt;br /&gt;
The easiest way to use boofcv is to reference its jars on [https://search.maven.org/search?q=g:org.boofcv Maven Central].  See below for Maven and Gradle code.  BoofCV is broken up into many modules.  To make it easier to use BoofCV all of its core functionality can be referenced using the &amp;#039;all&amp;#039; module.  Individual modules in &amp;quot;integration&amp;quot; still must be referenced individually.&lt;br /&gt;
&lt;br /&gt;
Artifact List&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-core&amp;#039;&amp;#039; : All the core functionality of BoofCV.&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-all&amp;#039;&amp;#039; : All the core and integration packages in BoofCV. This can be very large. You probably want core!&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-android&amp;#039;&amp;#039; : [http://developer.android.com/index.html Android] support &lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-WebcamCapture&amp;#039;&amp;#039; : [http://webcam-capture.sarxos.pl/ Webcam Capture support]&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-javacv&amp;#039;&amp;#039; : [https://github.com/bytedeco/javacv JavaCV] (Reading OpenCV files)&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-ffmpeg&amp;#039;&amp;#039; : [https://github.com/bytedeco/javacpp-presets javacpp-presets] Reading videos&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-swing&amp;#039;&amp;#039; : Visualization using Java Swing&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-jcodec&amp;#039;&amp;#039; : [http://jcodec.org/ jcodec] Pure Java (and buggy) library for reading videos.&lt;br /&gt;
&lt;br /&gt;
== Gradle Dependencies ==&lt;br /&gt;
&lt;br /&gt;
Here are some examples for how to add BoofCV to your Gradle project. You will need to replace $VERSION with the latest version of BoofCV, e.g. 0.41. If you just want image processing, with very few external dependencies, just include the following in your Gradle script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
api(&amp;quot;org.boofcv:boofcv-core:$VERSION&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
It is possible to include only the modules inside of core that you need. While not difficult, you will need to learn more about how BoofCV is structured.&lt;br /&gt;
&lt;br /&gt;
Since this does not include GUI or Webcam code most of the examples will not run! Here&amp;#039;s how you can add them:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&amp;#039;boofcv-core&amp;#039;,&amp;#039;boofcv-swing&amp;#039;,&amp;#039;boofcv-WebcamCapture&amp;#039;,&amp;#039;demonstrations&amp;#039;].each&lt;br /&gt;
    { String a -&amp;gt; compile group: &amp;#039;org.boofcv&amp;#039;, name: a, version: VERSION }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Deep Learning does add some external dependencies that most people don&amp;#039;t need. In the future that might become an optional dependency. For now look at [[Optimizing BoofCV]] for more complex ways to reduce the jar size.&lt;br /&gt;
&lt;br /&gt;
= Bleeding Edge = &lt;br /&gt;
&lt;br /&gt;
The absolutely latest code is available on Github. This code should be considered developmental and may or may not work. Please follow build instructions included in the [https://github.com/lessthanoptimal/BoofCV#building-from-source README.MD] as those will be up to date. There is also a (slightly) out of date [https://youtu.be/qMTtdiujAtQ?t=67 YouTube Video].&lt;br /&gt;
&lt;br /&gt;
= Past Releases =&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; width=600px cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
! Version !! Link !! Description &lt;br /&gt;
|-&lt;br /&gt;
| v0.41 || [https://sourceforge.net/projects/boofcv/files/v0.41 Link] || Aztec Code, Android cameras, multi camera calibration, mesh&lt;br /&gt;
|-&lt;br /&gt;
| v0.40.1 || [https://sourceforge.net/projects/boofcv/files/v0.40 Link] || Micro QR Code and strict null enforcement&lt;br /&gt;
|-&lt;br /&gt;
| v0.39.1 || [https://sourceforge.net/projects/boofcv/files/v0.39.1 Link] || Markers (ECoCheck, AruCo), Calibration Apps, Simulation&lt;br /&gt;
|-&lt;br /&gt;
| v0.38 || [https://sourceforge.net/projects/boofcv/files/v0.38 Link] || Better MVS and Scene Recognition&lt;br /&gt;
|-&lt;br /&gt;
| v0.37 || [https://sourceforge.net/projects/boofcv/files/v0.37 Link] || Mutli-View Stereo&lt;br /&gt;
|-&lt;br /&gt;
| v0.36 || [https://sourceforge.net/projects/boofcv/files/v0.36 Link] || Random dot markers, SBA in Visual odometry, visualization&lt;br /&gt;
|-&lt;br /&gt;
| v0.35 || [https://sourceforge.net/projects/boofcv/files/v0.35 Link] || Even better Chessboard, stereo, various&lt;br /&gt;
|-&lt;br /&gt;
| v0.34 || [https://sourceforge.net/projects/boofcv/files/v0.34 Link] || More Concurrency, Chessboard, Lines&lt;br /&gt;
|-&lt;br /&gt;
| v0.33 || [https://sourceforge.net/projects/boofcv/files/v0.33.1 Link] || Concurrency, SFM, QR Fixes&lt;br /&gt;
|-&lt;br /&gt;
| v0.32 || [https://sourceforge.net/projects/boofcv/files/v0.32 Link] || Uncalibrated Stereo&lt;br /&gt;
|-&lt;br /&gt;
| v0.31 || [https://sourceforge.net/projects/boofcv/files/v0.31 Link] || Sparse Bundle Adjustment&lt;br /&gt;
|-&lt;br /&gt;
| v0.30 || [https://sourceforge.net/projects/boofcv/files/v0.30 Link] || Android and SFM&lt;br /&gt;
|-&lt;br /&gt;
| v0.29 || [https://sourceforge.net/projects/boofcv/files/v0.29 Link] || BOverride, Background GMM, GVersion&lt;br /&gt;
|-&lt;br /&gt;
| v0.28 || [https://sourceforge.net/projects/boofcv/files/v0.28 Link] || Fisheye calibration, Hex target, QR Code, polyline&lt;br /&gt;
|-&lt;br /&gt;
| v0.27 || [https://sourceforge.net/projects/boofcv/files/v0.27 Link] || Module name changes, new calib target, new distortion&lt;br /&gt;
|-&lt;br /&gt;
| v0.26 || [https://sourceforge.net/projects/boofcv/files/v0.26 Link] || Critical bug fixes, more examples, improved asymmetric grid&lt;br /&gt;
|-&lt;br /&gt;
| v0.25 || [https://sourceforge.net/projects/boofcv/files/v0.25 Link] || 360 and fisheye support, Deep Learning, circle asym grid, ... etc&lt;br /&gt;
|-&lt;br /&gt;
| v0.24.1 || [https://sourceforge.net/projects/boofcv/files/v0.24.1 Link] || Fixed dependency on a SNAPSHOT &lt;br /&gt;
|-&lt;br /&gt;
| v0.24 || [https://sourceforge.net/projects/boofcv/files/v0.24 Link] || Replaced Xuggler with JavaCV&lt;br /&gt;
|-&lt;br /&gt;
| v0.23 || [https://sourceforge.net/projects/boofcv/files/v0.23 Link] || Refactoring of image names&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Download&amp;diff=3239</id>
		<title>Download</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Download&amp;diff=3239"/>
		<updated>2022-09-03T02:09:21Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BoofCV is available from its central repository at Github or through periodic releases.  Below are links to the latest stable release hosted on SourceForge.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Latest Stable Release:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* [https://sourceforge.net/projects/boofcv/files/v0.41/ Jars and Source Code]&lt;br /&gt;
* [https://github.com/lessthanoptimal/BoofCV/blob/v0.41/change.txt Change Log]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Pre-Built Applications:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* [[Applications#Examples_and_Demonstrations| Examples and Demonstrations ]]&lt;br /&gt;
&lt;br /&gt;
If you encounter any problems getting BoofCV up and running, please let us know!  A bug might have slipped through testing or if the instructions are not clear we would like to know.&lt;br /&gt;
&lt;br /&gt;
= Java Version =&lt;br /&gt;
&lt;br /&gt;
To run BoofCV requires Java 11 and above. Building BoofCV requires Java 17, but if you use the build in Gradle script that is handled for you.&lt;br /&gt;
&lt;br /&gt;
Where to download the Java Virtual Machine&lt;br /&gt;
* https://www.azul.com/downloads/zulu/&lt;br /&gt;
* https://adoptopenjdk.net/&lt;br /&gt;
&lt;br /&gt;
NOTE: Version 0.39 and before maintained compatibility with Java 8. &lt;br /&gt;
&lt;br /&gt;
= Maven Central =&lt;br /&gt;
The easiest way to use boofcv is to reference its jars on [https://search.maven.org/search?q=g:org.boofcv Maven Central].  See below for Maven and Gradle code.  BoofCV is broken up into many modules.  To make it easier to use BoofCV all of its core functionality can be referenced using the &amp;#039;all&amp;#039; module.  Individual modules in &amp;quot;integration&amp;quot; still must be referenced individually.&lt;br /&gt;
&lt;br /&gt;
Artifact List&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-core&amp;#039;&amp;#039; : All the core functionality of BoofCV.&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-all&amp;#039;&amp;#039; : All the core and integration packages in BoofCV. This can be very large. You probably want core!&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-android&amp;#039;&amp;#039; : [http://developer.android.com/index.html Android] support &lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-WebcamCapture&amp;#039;&amp;#039; : [http://webcam-capture.sarxos.pl/ Webcam Capture support]&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-javacv&amp;#039;&amp;#039; : [https://github.com/bytedeco/javacv JavaCV] (Reading OpenCV files)&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-ffmpeg&amp;#039;&amp;#039; : [https://github.com/bytedeco/javacpp-presets javacpp-presets] Reading videos&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-swing&amp;#039;&amp;#039; : Visualization using Java Swing&lt;br /&gt;
* &amp;#039;&amp;#039;boofcv-jcodec&amp;#039;&amp;#039; : [http://jcodec.org/ jcodec] Pure Java (and buggy) library for reading videos.&lt;br /&gt;
&lt;br /&gt;
== Gradle Dependencies ==&lt;br /&gt;
&lt;br /&gt;
Here are some examples for how to add BoofCV to your Gradle project. You will need to replace $VERSION with the latest version of BoofCV, e.g. 0.41. If you just want image processing, with very few external dependencies, just include the following in your Gradle script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
api(&amp;quot;org.boofcv:boofcv-core:$VERSION&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
It is possible to include only the modules inside of core that you need. While not difficult, you will need to learn more about how BoofCV is structured.&lt;br /&gt;
&lt;br /&gt;
Since this does not include GUI or Webcam code most of the examples will not run! Here&amp;#039;s how you can add them:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&amp;#039;boofcv-core&amp;#039;,&amp;#039;boofcv-swing&amp;#039;,&amp;#039;boofcv-WebcamCapture&amp;#039;,&amp;#039;demonstrations&amp;#039;].each&lt;br /&gt;
    { String a -&amp;gt; compile group: &amp;#039;org.boofcv&amp;#039;, name: a, version: VERSION }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Deep Learning does add some external dependencies that most people don&amp;#039;t need. In the future that might become an optional dependency. For now look at [[Optimizing BoofCV]] for more complex ways to reduce the jar size.&lt;br /&gt;
&lt;br /&gt;
= Bleeding Edge = &lt;br /&gt;
&lt;br /&gt;
The absolutely latest code is available on Github. This code should be considered developmental and may or may not work. Please follow build instructions included in the [https://github.com/lessthanoptimal/BoofCV#building-from-source README.MD] as those will be up to date. There is also a (slightly) out of date [https://youtu.be/qMTtdiujAtQ?t=67 YouTube Video].&lt;br /&gt;
&lt;br /&gt;
= Past Releases =&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; width=600px cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
! Version !! Link !! Description &lt;br /&gt;
|-&lt;br /&gt;
| v0.1 || [https://sourceforge.net/projects/boofcv/files/v0.41 Link] || Aztec Code, Android cameras, multi camera calibration, mesh&lt;br /&gt;
|-&lt;br /&gt;
| v0.40.1 || [https://sourceforge.net/projects/boofcv/files/v0.40 Link] || Micro QR Code and strict null enforcement&lt;br /&gt;
|-&lt;br /&gt;
| v0.39.1 || [https://sourceforge.net/projects/boofcv/files/v0.39.1 Link] || Markers (ECoCheck, AruCo), Calibration Apps, Simulation&lt;br /&gt;
|-&lt;br /&gt;
| v0.38 || [https://sourceforge.net/projects/boofcv/files/v0.38 Link] || Better MVS and Scene Recognition&lt;br /&gt;
|-&lt;br /&gt;
| v0.37 || [https://sourceforge.net/projects/boofcv/files/v0.37 Link] || Mutli-View Stereo&lt;br /&gt;
|-&lt;br /&gt;
| v0.36 || [https://sourceforge.net/projects/boofcv/files/v0.36 Link] || Random dot markers, SBA in Visual odometry, visualization&lt;br /&gt;
|-&lt;br /&gt;
| v0.35 || [https://sourceforge.net/projects/boofcv/files/v0.35 Link] || Even better Chessboard, stereo, various&lt;br /&gt;
|-&lt;br /&gt;
| v0.34 || [https://sourceforge.net/projects/boofcv/files/v0.34 Link] || More Concurrency, Chessboard, Lines&lt;br /&gt;
|-&lt;br /&gt;
| v0.33 || [https://sourceforge.net/projects/boofcv/files/v0.33.1 Link] || Concurrency, SFM, QR Fixes&lt;br /&gt;
|-&lt;br /&gt;
| v0.32 || [https://sourceforge.net/projects/boofcv/files/v0.32 Link] || Uncalibrated Stereo&lt;br /&gt;
|-&lt;br /&gt;
| v0.31 || [https://sourceforge.net/projects/boofcv/files/v0.31 Link] || Sparse Bundle Adjustment&lt;br /&gt;
|-&lt;br /&gt;
| v0.30 || [https://sourceforge.net/projects/boofcv/files/v0.30 Link] || Android and SFM&lt;br /&gt;
|-&lt;br /&gt;
| v0.29 || [https://sourceforge.net/projects/boofcv/files/v0.29 Link] || BOverride, Background GMM, GVersion&lt;br /&gt;
|-&lt;br /&gt;
| v0.28 || [https://sourceforge.net/projects/boofcv/files/v0.28 Link] || Fisheye calibration, Hex target, QR Code, polyline&lt;br /&gt;
|-&lt;br /&gt;
| v0.27 || [https://sourceforge.net/projects/boofcv/files/v0.27 Link] || Module name changes, new calib target, new distortion&lt;br /&gt;
|-&lt;br /&gt;
| v0.26 || [https://sourceforge.net/projects/boofcv/files/v0.26 Link] || Critical bug fixes, more examples, improved asymmetric grid&lt;br /&gt;
|-&lt;br /&gt;
| v0.25 || [https://sourceforge.net/projects/boofcv/files/v0.25 Link] || 360 and fisheye support, Deep Learning, circle asym grid, ... etc&lt;br /&gt;
|-&lt;br /&gt;
| v0.24.1 || [https://sourceforge.net/projects/boofcv/files/v0.24.1 Link] || Fixed dependency on a SNAPSHOT &lt;br /&gt;
|-&lt;br /&gt;
| v0.24 || [https://sourceforge.net/projects/boofcv/files/v0.24 Link] || Replaced Xuggler with JavaCV&lt;br /&gt;
|-&lt;br /&gt;
| v0.23 || [https://sourceforge.net/projects/boofcv/files/v0.23 Link] || Refactoring of image names&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Main_Page&amp;diff=3238</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Main_Page&amp;diff=3238"/>
		<updated>2022-09-03T02:07:01Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&lt;br /&gt;
[[File:Boofcv_logo_circles_frontpage.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
BoofCV is an open source library written from scratch for real-time computer vision. Its functionality covers a range of subjects, low-level image processing, camera calibration, feature detection/tracking, structure-from-motion, fiducial detection, and recognition. BoofCV has been released under an Apache  2.0 license for both academic and commercial use.&lt;br /&gt;
&lt;br /&gt;
BoofCV is organized into several packages: &amp;#039;&amp;#039;image processing&amp;#039;&amp;#039;, &amp;#039;&amp;#039;features&amp;#039;&amp;#039;, &amp;#039;&amp;#039;geometric vision&amp;#039;&amp;#039;, &amp;#039;&amp;#039;calibration&amp;#039;&amp;#039;, &amp;#039;&amp;#039;recognition&amp;#039;&amp;#039;,&amp;#039;&amp;#039;visualize&amp;#039;&amp;#039;, and &amp;#039;&amp;#039;IO&amp;#039;&amp;#039;.  &amp;#039;&amp;#039;Image processing&amp;#039;&amp;#039; contains commonly used image processing functions which operate directly on pixels.  &amp;#039;&amp;#039;Features&amp;#039;&amp;#039; contains feature extraction algorithms for use in higher level operations.  &amp;#039;&amp;#039;Calibration&amp;#039;&amp;#039; has routines for determining the camera&amp;#039;s intrinsic and extrinsic parameters.  &amp;#039;&amp;#039;Recognition&amp;#039;&amp;#039; is for recognition and tracking complex visual objects.  &amp;#039;&amp;#039;Geometric vision&amp;#039;&amp;#039; is composed of routines for processing extracted image features using 2D and 3D geometry. &amp;#039;&amp;#039;Visualize&amp;#039;&amp;#039; has routines for rendering and displaying extracted features.  &amp;#039;&amp;#039;IO&amp;#039;&amp;#039; has input and output routines for different data structures.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| &lt;br /&gt;
|-&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/wgPzlokxbXw|300|center}}&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/O_yAdsT8d84|300|center}}&lt;br /&gt;
|-&lt;br /&gt;
! New calibration tools in v0.39&lt;br /&gt;
! Three View Self Calibration&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://medium.com/p/35b431fcccf1 2022-Jan: Article on scanning Micro QR Codes]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[[Tutorial_Camera_Calibration|2021-Oct: Camera Calibration Tutorial has been re-written.]]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://youtu.be/RCL5tSt189M 2021-Mar: Stereo Cloud from Mars Perseverance Rover]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://youtu.be/ulpu03HTmwY 2020-Dec: 3D Reconstruction on Android]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://youtu.be/8pn9Ebw90uk 2020-June: BoofCV Summary for 0.34-0.36]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:Loose-lips.jpg|125px|link=https://groups.google.com/group/boofcv]] ||&lt;br /&gt;
{| width=&amp;quot;400pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Current Release: &amp;#039;&amp;#039;v0.41&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Date: &amp;#039;&amp;#039;September 2, 2022&amp;#039;&amp;#039; &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://github.com/lessthanoptimal/BoofCV/blob/v0.41/change.txt Change Log]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://youtu.be/BbTPQ9mIoQU Video Summary v0.38]&lt;br /&gt;
|}&lt;br /&gt;
| [[File:Boofcv_bug_propaganda_poster_small.jpg|125px|link=https://github.com/lessthanoptimal/BoofCV/issues]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| width=&amp;quot;600pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; |  [[File:Ninox360_icon_logo_moto.png|400px|link=https://www.ninox360.com]]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | A start up from the creators of BoofCV.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-help-icon.png|100px|link=[[Manual]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Manual]]&lt;br /&gt;
|-&lt;br /&gt;
| [[FAQ | FAQ]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.boofcv.org/javadoc/ JavaDoc]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCV/issues Report Bug]&lt;br /&gt;
|-&lt;br /&gt;
| [https://groups.google.com/group/boofcv Message Board]&lt;br /&gt;
|-&lt;br /&gt;
| [[Papers and Reports| Papers/Reports]]&lt;br /&gt;
|} &lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-binary-icon.png|100px|link=[https://github.com/lessthanoptimal/BoofCV Source Code]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Download|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.youtube.com/user/BoofCV/videos Videos]&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Bounties| Bounties ]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Contributing|Contribute]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCPP BoofCPP]&lt;br /&gt;
|} &lt;br /&gt;
| width&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-graph-icon.png|100px|link=[[Performance:BoofCV]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Performance:BoofCV|Performance]]&lt;br /&gt;
|-&lt;br /&gt;
| [[BoofCV Roadmap | Road Map]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Validation:Algorithms | Validation]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Projects_Using_BoofCV | Users ]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Acknowledgements|Acknowledgements]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;SPAN STYLE=&amp;quot;font-size: 14pt;text-align:center&amp;quot;&amp;gt;Prebuild Stand Alone Applications&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Examples_and_Demonstrations|Examples / Demonstrations]] || Example and demonstration applications&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create QR Code|QR Code Generator]] || Create and print QR Codes&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Square_Binary|Square Fiducials]] || Binary/Image Square Fiducial Generator &lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Calibration_Fiducials|Calibration Targets]] || Calibration Target Generator&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Camera_Calibration|Calibration]] || Camera Calibration Application&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Undistort|Lens Undistortion]] ||  Batch Removal of Lens Distortion&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Downsize|Image Downsize]] ||  Batch Image Down Sampling with minimal aliasing&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
| colspan=5 style=&amp;quot;background-color:#ffffdd;&amp;quot; align=&amp;quot;center&amp;quot; |&lt;br /&gt;
== Capability Summary ==&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Image Processing &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Feature &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Recognition&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Geometric &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Integration&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Image Convolution || [[Example_Convolution|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Image Derivatives || [[Example_Image_Derivative|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Thresholding || [[Example_Thresholding|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Ops || [[Example_Binary_Image|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Space || [[Example_Color_Space|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interpolation || [[Example_Interpolation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Deformation || [[Example_Key_Point_Based_Deformation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Blur || [[Example_Image_Blur|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Enhancement || [[Example_Image_Enhancement|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Noise Removal || [[Example_Wavelet_Noise_Removal|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fourier Transform || [[Example_Discrete_Fourier_Transform|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Wavelet Decomposition || &lt;br /&gt;
|- &lt;br /&gt;
| Discrete Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Float Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Scale Space Image || &lt;br /&gt;
|-&lt;br /&gt;
| Equirectangular || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye Cameras || [[Example_Fisheye_To_Pinhole|Example]]&lt;br /&gt;
|&lt;br /&gt;
|} &lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Black Polygons || [[Example_Detect_Black_Polygons|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Black Ellipses || [[Example_Detect_Black_Ellipses|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interest Points || [[Example_Detect_Interest_Points|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Line Detection || [[Example_Detect_Lines|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Motion Detection || [[Example_Background_Moving_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Contours || [[Example_Binary_Image|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Polygon Fitting || [[Example_Fit_Polygon|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Ellipse Fitting || [[Example_Fit_Ellipse|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Template Matching || [[Example_Template_Matching|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Interest Points || [[Example_Detect_Describe_Interface|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Dense Features || [[Example_Dense_Image_Features|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Point Tracking || [[Example_Track_Point_Features|Example]]&lt;br /&gt;
|-  &lt;br /&gt;
| Non-max Suppression || [[Example_Non_Maximum_Suppression|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Dense Optical Flow || [[Example_Dense_Optical_Flow|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Superpixels || [[Example_Superpixels|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Color Segmentation || [[Example_Color_Segmentation|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Scene Recognition || [[Example_Scene_Recognition|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Image Lookup || [[Example_Color_Histogram_Lookup|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| KNN Classifier || [[Example_Scene_Classification|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| CNN Classifiers || [[Example_Image_Classification|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Object Tracking || [[Example_Tracker_Object|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fiducials || [[Tutorial_Fiducials|Tutorial]]&lt;br /&gt;
|-&lt;br /&gt;
| QR Codes || [[Tutorial_QRCodes|Tutorial]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| SFM || [[Tutorial_Geometric_Vision|Tutorial]] &lt;br /&gt;
|- &lt;br /&gt;
| Camera Calibration || [[Tutorial_Camera_Calibration|Tutorial]]&lt;br /&gt;
|- &lt;br /&gt;
| Mono Calibration || [[Example_Calibrate_Planar_Mono|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Fisheye Calibration || [[Example_Calibrate_Planar_Fisheye|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Stereo Calibration || [[Example_Calibrate_Planar_Stereo|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Remove Distortion || [[Example_Remove_Lens_Distortion|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Equi to Pinhole || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye to Equi|| [[Example_Fisheye_To_Equirectangular|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Bundle Adjustment || [[Example Sparse Bundle Adjustment|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| 3D Stereo Cloud || [[Example_Stereo_Disparity_3D|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Monocular Stereo || [[Example_Stereo_Single_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Uncalibrated Stereo || [[Example_Three_View_Stereo_Uncalibrated|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Multi Baseline Stereo || [[Example_Multi_Baseline_Stereo|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Scene Reconstruction || [[Example_Multiview_Reconstruction_Dense|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Video Stabilization || [[Example_Video_Stabilization|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Video Mosaic || [[Example_Video_Mosaic|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Stereo || [[Example_Stereo_Visual_Odometry|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Mono Plane || [[Example_Visual_Odometry_Monocular_Plane|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: RGB-D || [[Example_Visual_Odometry_Depth|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
| Visualization&lt;br /&gt;
|-&lt;br /&gt;
| [[Android_support|Android]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Videos and Webcams|Video]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Kinect|Kinect]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Processing|Processing]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/PyBoof Python]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://boofcv.org/index.php?title=Main_Page&amp;diff=3237</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://boofcv.org/index.php?title=Main_Page&amp;diff=3237"/>
		<updated>2022-09-03T02:06:31Z</updated>

		<summary type="html">&lt;p&gt;Peter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&lt;br /&gt;
[[File:Boofcv_logo_circles_frontpage.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
BoofCV is an open source library written from scratch for real-time computer vision. Its functionality covers a range of subjects, low-level image processing, camera calibration, feature detection/tracking, structure-from-motion, fiducial detection, and recognition. BoofCV has been released under an Apache  2.0 license for both academic and commercial use.&lt;br /&gt;
&lt;br /&gt;
BoofCV is organized into several packages: &amp;#039;&amp;#039;image processing&amp;#039;&amp;#039;, &amp;#039;&amp;#039;features&amp;#039;&amp;#039;, &amp;#039;&amp;#039;geometric vision&amp;#039;&amp;#039;, &amp;#039;&amp;#039;calibration&amp;#039;&amp;#039;, &amp;#039;&amp;#039;recognition&amp;#039;&amp;#039;,&amp;#039;&amp;#039;visualize&amp;#039;&amp;#039;, and &amp;#039;&amp;#039;IO&amp;#039;&amp;#039;.  &amp;#039;&amp;#039;Image processing&amp;#039;&amp;#039; contains commonly used image processing functions which operate directly on pixels.  &amp;#039;&amp;#039;Features&amp;#039;&amp;#039; contains feature extraction algorithms for use in higher level operations.  &amp;#039;&amp;#039;Calibration&amp;#039;&amp;#039; has routines for determining the camera&amp;#039;s intrinsic and extrinsic parameters.  &amp;#039;&amp;#039;Recognition&amp;#039;&amp;#039; is for recognition and tracking complex visual objects.  &amp;#039;&amp;#039;Geometric vision&amp;#039;&amp;#039; is composed of routines for processing extracted image features using 2D and 3D geometry. &amp;#039;&amp;#039;Visualize&amp;#039;&amp;#039; has routines for rendering and displaying extracted features.  &amp;#039;&amp;#039;IO&amp;#039;&amp;#039; has input and output routines for different data structures.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| &lt;br /&gt;
|-&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/wgPzlokxbXw|300|center}}&lt;br /&gt;
| {{#ev:youtube|https://youtu.be/O_yAdsT8d84|300|center}}&lt;br /&gt;
|-&lt;br /&gt;
! New calibration tools in v0.39&lt;br /&gt;
! Three View Self Calibration&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://medium.com/p/35b431fcccf1 2022-Jan: Article on scanning Micro QR Codes]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[[Tutorial_Camera_Calibration|2021-Oct: Camera Calibration Tutorial has been re-written.]]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://youtu.be/RCL5tSt189M 2021-Mar: Stereo Cloud from Mars Perseverance Rover]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://youtu.be/ulpu03HTmwY 2020-Dec: 3D Reconstruction on Android]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| &amp;lt;SPAN STYLE=&amp;quot;font-size: 12pt&amp;quot;&amp;gt;[https://youtu.be/8pn9Ebw90uk 2020-June: BoofCV Summary for 0.34-0.36]&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:Loose-lips.jpg|125px|link=https://groups.google.com/group/boofcv]] ||&lt;br /&gt;
{| width=&amp;quot;400pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Current Release: &amp;#039;&amp;#039;v0.41&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;center&amp;quot; | Date: &amp;#039;&amp;#039;September 2, 2022&amp;#039;&amp;#039; &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://github.com/lessthanoptimal/BoofCV/blob/v0.42/change.txt Change Log]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [https://youtu.be/BbTPQ9mIoQU Video Summary v0.38]&lt;br /&gt;
|}&lt;br /&gt;
| [[File:Boofcv_bug_propaganda_poster_small.jpg|125px|link=https://github.com/lessthanoptimal/BoofCV/issues]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| width=&amp;quot;600pt&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; |  [[File:Ninox360_icon_logo_moto.png|400px|link=https://www.ninox360.com]]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | A start up from the creators of BoofCV.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-help-icon.png|100px|link=[[Manual]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Manual]]&lt;br /&gt;
|-&lt;br /&gt;
| [[FAQ | FAQ]]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.boofcv.org/javadoc/ JavaDoc]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCV/issues Report Bug]&lt;br /&gt;
|-&lt;br /&gt;
| [https://groups.google.com/group/boofcv Message Board]&lt;br /&gt;
|-&lt;br /&gt;
| [[Papers and Reports| Papers/Reports]]&lt;br /&gt;
|} &lt;br /&gt;
| width=&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-binary-icon.png|100px|link=[https://github.com/lessthanoptimal/BoofCV Source Code]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Download|Download]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.youtube.com/user/BoofCV/videos Videos]&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Bounties| Bounties ]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Contributing|Contribute]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/BoofCPP BoofCPP]&lt;br /&gt;
|} &lt;br /&gt;
| width&amp;quot;250pt&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:200px; color:black; background-color:white; font-size:140%; text-align:center;&amp;quot;&lt;br /&gt;
| [[File:Main-page-graph-icon.png|100px|link=[[Performance:BoofCV]]]]&lt;br /&gt;
|- &lt;br /&gt;
| [[Performance:BoofCV|Performance]]&lt;br /&gt;
|-&lt;br /&gt;
| [[BoofCV Roadmap | Road Map]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Validation:Algorithms | Validation]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Projects_Using_BoofCV | Users ]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Acknowledgements|Acknowledgements]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;SPAN STYLE=&amp;quot;font-size: 14pt;text-align:center&amp;quot;&amp;gt;Prebuild Stand Alone Applications&amp;lt;/SPAN&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Examples_and_Demonstrations|Examples / Demonstrations]] || Example and demonstration applications&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create QR Code|QR Code Generator]] || Create and print QR Codes&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Square_Binary|Square Fiducials]] || Binary/Image Square Fiducial Generator &lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Create_Calibration_Fiducials|Calibration Targets]] || Calibration Target Generator&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Camera_Calibration|Calibration]] || Camera Calibration Application&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Undistort|Lens Undistortion]] ||  Batch Removal of Lens Distortion&lt;br /&gt;
|-&lt;br /&gt;
| [[Applications#Batch_Downsize|Image Downsize]] ||  Batch Image Down Sampling with minimal aliasing&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- Vertical Space --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:640pt;height:30pt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:720pt;&amp;quot;&lt;br /&gt;
| colspan=5 style=&amp;quot;background-color:#ffffdd;&amp;quot; align=&amp;quot;center&amp;quot; |&lt;br /&gt;
== Capability Summary ==&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Image Processing &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Feature &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Recognition&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Geometric &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Integration&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Image Convolution || [[Example_Convolution|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Image Derivatives || [[Example_Image_Derivative|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Thresholding || [[Example_Thresholding|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Ops || [[Example_Binary_Image|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Space || [[Example_Color_Space|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interpolation || [[Example_Interpolation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Deformation || [[Example_Key_Point_Based_Deformation|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Image Blur || [[Example_Image_Blur|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Enhancement || [[Example_Image_Enhancement|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Noise Removal || [[Example_Wavelet_Noise_Removal|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fourier Transform || [[Example_Discrete_Fourier_Transform|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Wavelet Decomposition || &lt;br /&gt;
|- &lt;br /&gt;
| Discrete Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Float Image Pyramid || [[Example_Image_Pyramid|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Scale Space Image || &lt;br /&gt;
|-&lt;br /&gt;
| Equirectangular || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye Cameras || [[Example_Fisheye_To_Pinhole|Example]]&lt;br /&gt;
|&lt;br /&gt;
|} &lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Black Polygons || [[Example_Detect_Black_Polygons|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Black Ellipses || [[Example_Detect_Black_Ellipses|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Interest Points || [[Example_Detect_Interest_Points|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Line Detection || [[Example_Detect_Lines|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Motion Detection || [[Example_Background_Moving_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Binary Contours || [[Example_Binary_Image|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Polygon Fitting || [[Example_Fit_Polygon|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Ellipse Fitting || [[Example_Fit_Ellipse|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Template Matching || [[Example_Template_Matching|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Interest Points || [[Example_Detect_Describe_Interface|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Dense Features || [[Example_Dense_Image_Features|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Point Tracking || [[Example_Track_Point_Features|Example]]&lt;br /&gt;
|-  &lt;br /&gt;
| Non-max Suppression || [[Example_Non_Maximum_Suppression|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Dense Optical Flow || [[Example_Dense_Optical_Flow|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Superpixels || [[Example_Superpixels|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Color Segmentation || [[Example_Color_Segmentation|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| Scene Recognition || [[Example_Scene_Recognition|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Color Image Lookup || [[Example_Color_Histogram_Lookup|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| KNN Classifier || [[Example_Scene_Classification|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| CNN Classifiers || [[Example_Image_Classification|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Object Tracking || [[Example_Tracker_Object|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fiducials || [[Tutorial_Fiducials|Tutorial]]&lt;br /&gt;
|-&lt;br /&gt;
| QR Codes || [[Tutorial_QRCodes|Tutorial]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| SFM || [[Tutorial_Geometric_Vision|Tutorial]] &lt;br /&gt;
|- &lt;br /&gt;
| Camera Calibration || [[Tutorial_Camera_Calibration|Tutorial]]&lt;br /&gt;
|- &lt;br /&gt;
| Mono Calibration || [[Example_Calibrate_Planar_Mono|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Fisheye Calibration || [[Example_Calibrate_Planar_Fisheye|Example]]&lt;br /&gt;
|- &lt;br /&gt;
| Stereo Calibration || [[Example_Calibrate_Planar_Stereo|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Remove Distortion || [[Example_Remove_Lens_Distortion|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Equi to Pinhole || [[Example_Equirectangular_To_Pinhole|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Fisheye to Equi|| [[Example_Fisheye_To_Equirectangular|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Bundle Adjustment || [[Example Sparse Bundle Adjustment|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| 3D Stereo Cloud || [[Example_Stereo_Disparity_3D|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Monocular Stereo || [[Example_Stereo_Single_Camera|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Uncalibrated Stereo || [[Example_Three_View_Stereo_Uncalibrated|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Multi Baseline Stereo || [[Example_Multi_Baseline_Stereo|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Scene Reconstruction || [[Example_Multiview_Reconstruction_Dense|Example]] &lt;br /&gt;
|-&lt;br /&gt;
| Video Stabilization || [[Example_Video_Stabilization|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Video Mosaic || [[Example_Video_Mosaic|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Stereo || [[Example_Stereo_Visual_Odometry|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: Mono Plane || [[Example_Visual_Odometry_Monocular_Plane|Example]]&lt;br /&gt;
|-&lt;br /&gt;
| Visual Odom: RGB-D || [[Example_Visual_Odometry_Depth|Example]]&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|&lt;br /&gt;
| Visualization&lt;br /&gt;
|-&lt;br /&gt;
| [[Android_support|Android]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Videos and Webcams|Video]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Kinect|Kinect]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Tutorial Processing|Processing]]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/lessthanoptimal/PyBoof Python]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
</feed>