Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.5%) to scientific vocabulary
Last synced: 9 months ago · JSON representation ·

Repository

Basic Info
  • Host: GitHub
  • Owner: yakir12
  • License: mit
  • Language: Julia
  • Default Branch: main
  • Size: 1.02 MB
Statistics
  • Stars: 9
  • Watchers: 4
  • Forks: 2
  • Open Issues: 0
  • Releases: 13
Created over 5 years ago · Last pushed 10 months ago
Metadata Files
Readme License Citation

README.md

CameraCalibrations

Build Status Coverage Aqua

This is a package for camera calibration in Julia.

How to install

julia ] add CameraCalibrations

How to use

Using files

First we build the calibration object based on the files: the image files of the checkerboard, n_corners: the number of inner corners in each of the sides of the checkerboard, and checker_size: the physical size of the checker (e.g. in cm).

julia using CameraCalibrations c, ϵ = fit(files, n_corners, checker_size)

Then we can use that object to calibrate pixel coordinates and/or images, given the extrinsic image we want to refer to: julia i1 = RowCol(1.2, 3.4) # a cartesian index in image-pixel coordinates xyz = c(i1, 1) # convert to real-world coordinates of the first image i2 = c(xyz, 1) # convert back to pixel coordinates i2 ≈ i1 # true

The error term, ϵ, includes the reprojection, projection, distance, and inverse errors for the calibration. distance measures the mean error of the distance between all adjacent checkerboard corners from the expected checker_size. inverse measures the mean error of applying the calibration's transformation and its inverse 100 times.

Using im-memory images

The syntax for in-memory images is very similar to that of files. The difference is that here we must specify "tags" (a name in the form of a string) for each of the images. Because corner detection can fail in one or more of the images (due to occlusion, low image quality, etc), it can be important for the user to know which of the images failed. Thsi becomes important if say one of the images that failed was the one you had hoped to use for the extrinsic parameters. The images must also be gray-scale.

julia fit(tags::Vector{T}, imgs::Vector{Matrix{S}}, n_corners, checker_size) where {T <: AbstractString, S <: Gray}

Additional arguments

  • aspect: Specifies the aspect ratio of the images. Defaults to 1.
  • with_distortion: Include lens distortion in the model. This can be useful to exclude if the resulting camera model results in "donut artifacts" (where the projected coordinates wrap back on themselves at the periphery of the image). Defaults to true.
  • plot_folder: Save the rectified calibration images with a red cross on each detected checkerboard corner and a blue one for the reprojected one. This is useful for assessing the quality of the calibration: the checkerboards should look square and the centers of the red and blue crosses should overlap.

Features

  • [x] thread safe
  • [x] saving and loading (JSON) calibration files
  • [x] corner detection is done with opencv
  • [x] model fitting is done with opencv
  • [x] opencv is python-free, via OpenCV.jl
  • [x] plot calibrated images
  • [x] allows for calibration images that were saved with an aspect ration ≠ 1
  • [x] in-memory images

Citing

See CITATION.bib for the relevant reference(s).

Owner

  • Name: Yakir Luc Gagnon
  • Login: yakir12
  • Kind: user
  • Location: Malmö Sweden
  • Company: Lund University

Citation (CITATION.bib)

@misc{CameraCalibrations.jl,
	author  = {Yakir Gagnon <12.yakir@gmail.com> and contributors},
	title   = {CameraCalibrations.jl},
	url     = {https://github.com/yakir12/CameraCalibrations.jl},
	version = {v1.0.0-DEV},
	year    = {2024},
	month   = {12}
}

GitHub Events

Total
  • Create event: 6
  • Commit comment event: 4
  • Release event: 2
  • Issues event: 3
  • Delete event: 4
  • Issue comment event: 7
  • Push event: 50
  • Pull request event: 3
  • Fork event: 1
Last Year
  • Create event: 6
  • Commit comment event: 4
  • Release event: 2
  • Issues event: 3
  • Delete event: 4
  • Issue comment event: 7
  • Push event: 50
  • Pull request event: 3
  • Fork event: 1

Issues and Pull Requests

Last synced: 10 months ago

All Time
  • Total issues: 2
  • Total pull requests: 3
  • Average time to close issues: 3 days
  • Average time to close pull requests: 1 day
  • Total issue authors: 1
  • Total pull request authors: 2
  • Average comments per issue: 1.0
  • Average comments per pull request: 0.33
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 1
Past Year
  • Issues: 2
  • Pull requests: 3
  • Average time to close issues: 3 days
  • Average time to close pull requests: 1 day
  • Issue authors: 1
  • Pull request authors: 2
  • Average comments per issue: 1.0
  • Average comments per pull request: 0.33
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 1
Top Authors
Issue Authors
  • yakir12 (2)
Pull Request Authors
  • dependabot[bot] (2)
  • yakir12 (2)
Top Labels
Issue Labels
Pull Request Labels
dependencies (2)

Packages

  • Total packages: 1
  • Total downloads:
    • julia 1 total
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 13
juliahub.com: CameraCalibrations
  • Versions: 13
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 1 Total
Rankings
Dependent repos count: 9.9%
Average: 36.2%
Dependent packages count: 38.9%
Stargazers count: 42.3%
Forks count: 53.5%
Last synced: 10 months ago

Dependencies

.github/workflows/CompatHelper.yml actions
.github/workflows/TagBot.yml actions
  • JuliaRegistries/TagBot v1 composite