# From https://github.com/zygmuntszpak/MultipleViewGeometry.jl function cost(c::CostFunction, entity::FundamentalMatrix, ๐›‰::AbstractArray, ๐’ž::Tuple{AbstractArray, Vararg{AbstractArray}}, ๐’Ÿ::Tuple{AbstractArray, Vararg{AbstractArray}}) โ„ณ, โ„ณสน = ๐’Ÿ ฮ›โ‚, ฮ›โ‚‚ = ๐’ž Jโ‚โ‚˜โ‚— = 0.0 N = length(๐’Ÿ[1]) ๐šฒโ‚™ = @MMatrix zeros(4,4) ๐žโ‚ = @SVector [1.0, 0.0, 0.0] ๐žโ‚‚ = @SVector [0.0, 1.0, 0.0] index = SVector(1,2) @inbounds for n = 1:N ๐šฒโ‚™[1:2,1:2] .= ฮ›โ‚[n][index,index] ๐šฒโ‚™[3:4,3:4] .= ฮ›โ‚‚[n][index,index] ๐ฆ = hom(โ„ณ[n]) ๐ฆสน= hom(โ„ณสน[n]) ๐”โ‚™ = (๐ฆ โŠ— ๐ฆสน) โˆ‚โ‚“๐ฎโ‚™ = [(๐žโ‚ โŠ— ๐ฆสน) (๐žโ‚‚ โŠ— ๐ฆสน) (๐ฆ โŠ— ๐žโ‚) (๐ฆ โŠ— ๐žโ‚‚)] ๐โ‚™ = โˆ‚โ‚“๐ฎโ‚™ * ๐šฒโ‚™ * โˆ‚โ‚“๐ฎโ‚™' ๐šบโ‚™ = ๐›‰' * ๐โ‚™ * ๐›‰ ๐šบโ‚™โปยน = inv(๐šบโ‚™) Jโ‚โ‚˜โ‚— += ๐›‰' * ๐”โ‚™ * ๐šบโ‚™โปยน * ๐”โ‚™' * ๐›‰ end Jโ‚โ‚˜โ‚— end