Add IPCV2 warping and classification

This commit is contained in:
2024-04-29 19:11:33 +02:00
parent 7a84143faf
commit dc7cbabf80
16 changed files with 569 additions and 4 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 792 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 940 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 920 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 622 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 KiB

View File

@ -0,0 +1,280 @@
<mxfile host="Electron" modified="2024-04-29T13:43:34.218Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/23.1.5 Chrome/120.0.6099.109 Electron/28.1.0 Safari/537.36" etag="_r0HMs9nD7YSSHOj-esx" version="23.1.5" type="device">
<diagram name="Pagina-1" id="2E39NDmfMYuv_2c8OxZy">
<mxGraphModel dx="819" dy="478" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="YHuVpkroIluG6QRTz7fR-1" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="712.5" y="400" width="100" height="100" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-2" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#000000;" vertex="1" parent="1">
<mxGeometry x="710" y="396" width="10" height="10" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-3" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#000000;" vertex="1" parent="1">
<mxGeometry x="707.5" y="495" width="10" height="10" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-4" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#000000;" vertex="1" parent="1">
<mxGeometry x="807.5" y="395" width="10" height="10" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-5" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#000000;" vertex="1" parent="1">
<mxGeometry x="808" y="495" width="10" height="10" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-7" value="" style="endArrow=none;dashed=1;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.583;exitY=-0.005;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1" source="YHuVpkroIluG6QRTz7fR-46" target="YHuVpkroIluG6QRTz7fR-6">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="765" y="450" as="sourcePoint" />
<mxPoint x="815" y="400" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-8" value="" style="endArrow=none;dashed=1;html=1;rounded=0;entryX=-0.007;entryY=0.372;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryPerimeter=0;" edge="1" parent="1" source="YHuVpkroIluG6QRTz7fR-6" target="YHuVpkroIluG6QRTz7fR-1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="795" y="410" as="sourcePoint" />
<mxPoint x="795" y="436" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-9" value="&lt;font face=&quot;Computer modern&quot;&gt;∆&lt;i&gt;v&lt;/i&gt;&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="770" y="400" width="15" height="40" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-10" value="&lt;font face=&quot;Computer modern&quot;&gt;∆&lt;i&gt;u&lt;/i&gt;&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="712.5" y="437" width="60" height="9" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-11" value="&lt;font face=&quot;Computer modern&quot;&gt;&lt;i&gt;I&lt;/i&gt;&lt;sub style=&quot;&quot;&gt;1&lt;/sub&gt;=&lt;i&gt;I&lt;/i&gt;(&lt;i&gt;u&lt;/i&gt;&lt;sub style=&quot;&quot;&gt;1&lt;/sub&gt;&lt;i&gt;, v&lt;/i&gt;&lt;sub style=&quot;&quot;&gt;1&lt;/sub&gt;)&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="682.5" y="380" width="65" height="15" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-12" value="&lt;font face=&quot;Computer modern&quot;&gt;&lt;i&gt;I&lt;/i&gt;&lt;sub style=&quot;&quot;&gt;2&lt;/sub&gt;=&lt;i&gt;I&lt;/i&gt;(&lt;i&gt;u&lt;/i&gt;&lt;sub style=&quot;&quot;&gt;2&lt;/sub&gt;&lt;i&gt;, v&lt;/i&gt;&lt;sub style=&quot;&quot;&gt;2&lt;/sub&gt;)&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="780.5" y="380" width="65" height="15" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-13" value="&lt;font face=&quot;Computer modern&quot;&gt;&lt;i&gt;I&lt;/i&gt;&lt;sub style=&quot;&quot;&gt;4&lt;/sub&gt;=&lt;i&gt;I&lt;/i&gt;(&lt;i&gt;u&lt;/i&gt;&lt;sub style=&quot;&quot;&gt;4&lt;/sub&gt;&lt;i&gt;, v&lt;/i&gt;&lt;sub style=&quot;&quot;&gt;4&lt;/sub&gt;)&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="780.5" y="505" width="65" height="15" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-14" value="&lt;font face=&quot;Computer modern&quot;&gt;&lt;i&gt;I&lt;/i&gt;&lt;sub style=&quot;&quot;&gt;3&lt;/sub&gt;=&lt;i&gt;I&lt;/i&gt;(&lt;i&gt;u&lt;/i&gt;&lt;sub style=&quot;&quot;&gt;3&lt;/sub&gt;&lt;i&gt;, v&lt;/i&gt;&lt;sub style=&quot;&quot;&gt;3&lt;/sub&gt;)&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="680" y="505" width="65" height="15" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-16" value="&lt;font face=&quot;Computer modern&quot;&gt;&lt;i&gt;I&lt;/i&gt;(&lt;/font&gt;∆&lt;font face=&quot;Computer modern&quot;&gt;&lt;i&gt;u&lt;/i&gt;&lt;i&gt;,&lt;/i&gt;&lt;/font&gt;∆&lt;font face=&quot;Computer modern&quot;&gt;&lt;i&gt;v&lt;/i&gt;)&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="767.5" y="439" width="50" height="15" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-18" value="" style="endArrow=none;dashed=1;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.583;entryY=1.004;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="YHuVpkroIluG6QRTz7fR-44" target="YHuVpkroIluG6QRTz7fR-1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="785" y="470" as="sourcePoint" />
<mxPoint x="745" y="510" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-6" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#000000;" vertex="1" parent="1">
<mxGeometry x="765.5" y="432" width="10" height="10" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-20" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="140" y="400" width="100" height="100" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-21" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#000000;" vertex="1" parent="1">
<mxGeometry x="135" y="395" width="10" height="10" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-22" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#000000;" vertex="1" parent="1">
<mxGeometry x="135" y="495" width="10" height="10" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-23" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#000000;" vertex="1" parent="1">
<mxGeometry x="235.5" y="395" width="10" height="10" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-24" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#000000;" vertex="1" parent="1">
<mxGeometry x="234" y="495" width="10" height="10" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-25" value="" style="endArrow=none;dashed=1;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.583;exitY=-0.005;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1" source="YHuVpkroIluG6QRTz7fR-20" target="YHuVpkroIluG6QRTz7fR-35">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="192.5" y="450" as="sourcePoint" />
<mxPoint x="242.5" y="400" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-26" value="" style="endArrow=none;dashed=1;html=1;rounded=0;entryX=-0.007;entryY=0.372;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryPerimeter=0;" edge="1" parent="1" source="YHuVpkroIluG6QRTz7fR-35" target="YHuVpkroIluG6QRTz7fR-20">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="222.5" y="410" as="sourcePoint" />
<mxPoint x="222.5" y="436" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-27" value="&lt;font face=&quot;Computer modern&quot;&gt;∆&lt;i&gt;v&lt;/i&gt;&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="200" y="401" width="15" height="39" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-28" value="&lt;font face=&quot;Computer modern&quot;&gt;∆&lt;i&gt;u&lt;/i&gt;&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="140" y="437" width="60" height="9" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-29" value="&lt;font face=&quot;Computer modern&quot;&gt;&lt;i&gt;I&lt;/i&gt;&lt;sub style=&quot;&quot;&gt;1&lt;/sub&gt;=&lt;i&gt;I&lt;/i&gt;(&lt;i&gt;u&lt;/i&gt;&lt;sub style=&quot;&quot;&gt;1&lt;/sub&gt;&lt;i&gt;, v&lt;/i&gt;&lt;sub style=&quot;&quot;&gt;1&lt;/sub&gt;)&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="110" y="380" width="65" height="15" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-30" value="&lt;font face=&quot;Computer modern&quot;&gt;&lt;i&gt;I&lt;/i&gt;&lt;sub style=&quot;&quot;&gt;2&lt;/sub&gt;=&lt;i&gt;I&lt;/i&gt;(&lt;i&gt;u&lt;/i&gt;&lt;sub style=&quot;&quot;&gt;2&lt;/sub&gt;&lt;i&gt;, v&lt;/i&gt;&lt;sub style=&quot;&quot;&gt;2&lt;/sub&gt;)&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="208" y="380" width="65" height="15" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-31" value="&lt;font face=&quot;Computer modern&quot;&gt;&lt;i&gt;I&lt;/i&gt;&lt;sub style=&quot;&quot;&gt;4&lt;/sub&gt;=&lt;i&gt;I&lt;/i&gt;(&lt;i&gt;u&lt;/i&gt;&lt;sub style=&quot;&quot;&gt;4&lt;/sub&gt;&lt;i&gt;, v&lt;/i&gt;&lt;sub style=&quot;&quot;&gt;4&lt;/sub&gt;)&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="208" y="505" width="65" height="15" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-32" value="&lt;font face=&quot;Computer modern&quot;&gt;&lt;i&gt;I&lt;/i&gt;&lt;sub style=&quot;&quot;&gt;3&lt;/sub&gt;=&lt;i&gt;I&lt;/i&gt;(&lt;i&gt;u&lt;/i&gt;&lt;sub style=&quot;&quot;&gt;3&lt;/sub&gt;&lt;i&gt;, v&lt;/i&gt;&lt;sub style=&quot;&quot;&gt;3&lt;/sub&gt;)&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="107.5" y="505" width="65" height="15" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-33" value="&lt;font face=&quot;Computer modern&quot;&gt;&lt;i&gt;I&lt;/i&gt;(&lt;/font&gt;∆&lt;font face=&quot;Computer modern&quot;&gt;&lt;i&gt;u&lt;/i&gt;&lt;i&gt;,&lt;/i&gt;&lt;/font&gt;∆&lt;font face=&quot;Computer modern&quot;&gt;&lt;i&gt;v&lt;/i&gt;)&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="194" y="440" width="50" height="15" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-35" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#000000;" vertex="1" parent="1">
<mxGeometry x="193" y="432" width="10" height="10" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-37" value="&lt;font face=&quot;Computer modern&quot;&gt;&lt;i&gt;I&lt;/i&gt;&lt;sub style=&quot;&quot;&gt;&lt;i&gt;b&lt;/i&gt;&lt;/sub&gt;&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="738" y="505" width="65" height="15" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-38" value="&lt;font face=&quot;Computer modern&quot;&gt;&lt;i&gt;I&lt;/i&gt;&lt;sub style=&quot;&quot;&gt;&lt;i&gt;a&lt;/i&gt;&lt;/sub&gt;&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="738" y="380" width="65" height="15" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-39" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;entryX=1;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" target="YHuVpkroIluG6QRTz7fR-41">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="140" y="370" as="sourcePoint" />
<mxPoint x="260" y="370" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-41" value="&lt;font face=&quot;Computer modern&quot;&gt;1&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="140" y="360" width="100" height="10" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-42" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;exitX=1;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="YHuVpkroIluG6QRTz7fR-43">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="110" y="520" as="sourcePoint" />
<mxPoint x="110" y="400" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-43" value="&lt;font face=&quot;Computer modern&quot;&gt;1&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="100" y="400" width="10" height="100" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-45" value="" style="endArrow=none;dashed=1;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.583;entryY=1.004;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="YHuVpkroIluG6QRTz7fR-6" target="YHuVpkroIluG6QRTz7fR-44">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="785" y="450" as="sourcePoint" />
<mxPoint x="785" y="520" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-44" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#000000;" vertex="1" parent="1">
<mxGeometry x="765.5" y="495" width="10" height="10" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-47" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#000000;" vertex="1" parent="1">
<mxGeometry x="372" y="476.5" width="10" height="10" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-48" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#000000;" vertex="1" parent="1">
<mxGeometry x="493.5" y="476.5" width="10" height="10" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-49" value="&lt;font face=&quot;Computer modern&quot;&gt;&lt;i&gt;I&lt;/i&gt;&lt;sub style=&quot;&quot;&gt;1&lt;/sub&gt;&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="350" y="434" width="65" height="15" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-50" value="&lt;font face=&quot;Computer modern&quot;&gt;&lt;i&gt;I&lt;/i&gt;&lt;sub style=&quot;&quot;&gt;2&lt;/sub&gt;&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="478" y="406" width="41" height="15" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-51" value="&lt;font face=&quot;Computer modern&quot;&gt;&lt;i&gt;I&lt;/i&gt;&lt;sub style=&quot;&quot;&gt;&lt;i&gt;a&lt;/i&gt;&lt;/sub&gt;&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="416" y="414.5" width="65" height="15" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-52" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#000000;" vertex="1" parent="1">
<mxGeometry x="443.5" y="476.5" width="10" height="10" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-53" value="" style="endArrow=none;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="YHuVpkroIluG6QRTz7fR-47" target="YHuVpkroIluG6QRTz7fR-48">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="307" y="461.5" as="sourcePoint" />
<mxPoint x="357" y="411.5" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-54" value="" style="endArrow=none;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" edge="1" parent="1" source="YHuVpkroIluG6QRTz7fR-47">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="378" y="482.5" as="sourcePoint" />
<mxPoint x="377" y="451.5" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-55" value="" style="endArrow=none;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" edge="1" parent="1" source="YHuVpkroIluG6QRTz7fR-48">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="417" y="461.5" as="sourcePoint" />
<mxPoint x="498" y="421.5" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-56" value="" style="endArrow=none;dashed=1;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="377" y="451.5" as="sourcePoint" />
<mxPoint x="497" y="421.5" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-57" value="" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" target="YHuVpkroIluG6QRTz7fR-52">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="448" y="434.5" as="sourcePoint" />
<mxPoint x="487" y="441.5" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-59" value="&lt;font face=&quot;Computer modern&quot;&gt;∆&lt;i&gt;u&lt;/i&gt;&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="378" y="471.5" width="70" height="9" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-60" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="378" y="496.5" as="sourcePoint" />
<mxPoint x="500" y="496.5" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-61" value="&lt;font face=&quot;Computer modern&quot;&gt;1&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="378" y="497.5" width="120" height="10" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-106" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#000000;" vertex="1" parent="1">
<mxGeometry x="520" y="476.5" width="10" height="10" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-107" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#000000;" vertex="1" parent="1">
<mxGeometry x="641.5" y="476.5" width="10" height="10" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-108" value="&lt;font face=&quot;Computer modern&quot;&gt;&lt;i&gt;I&lt;/i&gt;&lt;sub style=&quot;&quot;&gt;3&lt;/sub&gt;&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="499" y="419" width="65" height="15" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-109" value="&lt;font face=&quot;Computer modern&quot;&gt;&lt;i&gt;I&lt;/i&gt;&lt;sub style=&quot;&quot;&gt;4&lt;/sub&gt;&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="626" y="445" width="41" height="15" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-110" value="&lt;font face=&quot;Computer modern&quot;&gt;&lt;i&gt;I&lt;/i&gt;&lt;sub style=&quot;&quot;&gt;&lt;i&gt;b&lt;/i&gt;&lt;/sub&gt;&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="564" y="434" width="65" height="15" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-111" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#000000;" vertex="1" parent="1">
<mxGeometry x="591.5" y="476.5" width="10" height="10" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-112" value="" style="endArrow=none;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="YHuVpkroIluG6QRTz7fR-106" target="YHuVpkroIluG6QRTz7fR-107">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="455" y="461.5" as="sourcePoint" />
<mxPoint x="505" y="411.5" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-113" value="" style="endArrow=none;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" edge="1" parent="1" source="YHuVpkroIluG6QRTz7fR-106">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="526" y="482.5" as="sourcePoint" />
<mxPoint x="525" y="434" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-114" value="" style="endArrow=none;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" edge="1" parent="1" source="YHuVpkroIluG6QRTz7fR-107">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="565" y="461.5" as="sourcePoint" />
<mxPoint x="646" y="463" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-115" value="" style="endArrow=none;dashed=1;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="525" y="434" as="sourcePoint" />
<mxPoint x="645" y="463" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-116" value="" style="endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" target="YHuVpkroIluG6QRTz7fR-111">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="596" y="451" as="sourcePoint" />
<mxPoint x="635" y="441.5" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-117" value="&lt;font face=&quot;Computer modern&quot;&gt;∆&lt;i&gt;u&lt;/i&gt;&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="526" y="471.5" width="70" height="9" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-118" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="526" y="496.5" as="sourcePoint" />
<mxPoint x="648" y="496.5" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-119" value="&lt;font face=&quot;Computer modern&quot;&gt;1&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="526" y="497.5" width="120" height="10" as="geometry" />
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-120" value="" style="endArrow=none;dashed=1;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.583;exitY=-0.005;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1" source="YHuVpkroIluG6QRTz7fR-1" target="YHuVpkroIluG6QRTz7fR-46">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="770.5" y="400" as="sourcePoint" />
<mxPoint x="770.5" y="432" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="YHuVpkroIluG6QRTz7fR-46" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#000000;" vertex="1" parent="1">
<mxGeometry x="765.5" y="395" width="10" height="10" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View File

@ -9,5 +9,6 @@
\makenotesfront
\input{./sections/_image_formation.tex}
\input{./sections/_classification.tex}
\end{document}

View File

@ -0,0 +1,105 @@
\chapter{Image classification}
\section{Supervised datasets}
\begin{description}
\item[Dataset] \marginnote{Dataset}
Given a set of labeled data, it can be split into:
\begin{descriptionlist}
\item[Train set] $D^\text{train} = \{ (\text{x}_\text{train}^{(i)}, y_\text{train}^{(i)}) \mid i = 1, \dots, N \}$.
\item[Test set] $D^\text{test} = \{ (\text{x}_\text{test}^{(i)}, y_\text{test}^{(i)}) \mid i = 1, \dots, M \}$.
\end{descriptionlist}
It is assumed that the two sets contain i.i.d. samples drawn from the same unknown distribution.
\end{description}
\subsection{Modified NIST (MNIST)}
\begin{minipage}{0.45\linewidth}
\centering
\includegraphics[width=0.9\linewidth]{./img/mnist.png}
\end{minipage}
\begin{minipage}{0.5\linewidth}
\begin{descriptionlist}
\item[Content] Handwritten digits from 0 to 9.
\item[Number of classes] 10.
\item[Train set size] 50k.
\item[Test set size] 10k.
\item[Image format] $28 \times 28$ grayscale.
\end{descriptionlist}
\end{minipage}
\subsection{CIFAR10}
\begin{minipage}{0.45\linewidth}
\centering
\includegraphics[width=0.9\linewidth]{./img/cifar10.png}
\end{minipage}
\begin{minipage}{0.5\linewidth}
\begin{descriptionlist}
\item[Content] Objects of various categories.
\item[Number of classes] 10.
\item[Train set size] 50k.
\item[Test set size] 10k.
\item[Image size] $32 \times 32$ RGB.
\end{descriptionlist}
\end{minipage}
\subsection{CIFAR100}
\begin{minipage}{0.45\linewidth}
\centering
\includegraphics[width=0.7\linewidth]{./img/cifar100.png}
\end{minipage}
\begin{minipage}{0.5\linewidth}
\begin{descriptionlist}
\item[Content] Objects of various categories.
\item[Number of classes] 100 (20 super-classed with 5 sub-classes).
\item[Train set size] 50k.
\item[Test set size] 10k.
\item[Image size] $32 \times 32$ RGB.
\end{descriptionlist}
\end{minipage}
\subsection{ImageNet 21k}
\begin{descriptionlist}
\item[Content] Objects of various categories.
\item[Number of classes] 21k synsets from WordNet organized hierarchically.
\item[Dataset size] 14 millions.
\item[Image size] Variable resolution RGB. Average size of $400 \times 350$.
\end{descriptionlist}
\begin{figure}[H]
\centering
\includegraphics[width=0.85\linewidth]{./img/imagenet21k.png}
\end{figure}
\subsection{ImageNet 1k}
\begin{minipage}{0.45\linewidth}
\centering
\includegraphics[width=\linewidth]{./img/imagenet1k.png}
\end{minipage}
\begin{minipage}{0.5\linewidth}
\begin{descriptionlist}
\item[Content] Objects of various categories.
\item[Number of classes] 1000.
\item[Train set size] $1.3$ millions.
\item[Validation set size] 50k.
\item[Test set size] 100k.
\item[Image size] Variable resolution RGB. Often resized to $256 \times 256$.
\end{descriptionlist}
\end{minipage}
\begin{remark}
Performance is usually measured as top-5 accuracy as making a single prediction might be ambiguous due to the fact that the images can contain multiple objects.
\end{remark}

View File

@ -477,7 +477,7 @@ Therefore, the complete workflow for image formation becomes the following:
\end{description}
\item[Initial homographies guess]
For each image $i$, compute an initial guess of its homography $H_i$.
For each image $i$, compute an initial guess of its homography $\matr{H}_i$.
Due to the choice of the $z$-axis position, the perspective projection matrix and the WRF points can be simplified:
\[
@ -842,6 +842,185 @@ Starting from the output image coordinates, use the inverse of the warping funct
The computed input coordinates might be continuous. Possible discretization strategies are:
\begin{itemize}
\item Truncation.
\item Nearest neighbor (i.e. rounding).
\item Interpolation between the 4 closest points (e.g. bilinear, bicubic, \dots).
\end{itemize}
\item Nearest neighbor.
\item Interpolation between the 4 closest pixels of the continuous point (e.g. bilinear, bicubic, \dots).
\end{itemize}
\begin{description}
\item[Bilinear interpolation] \marginnote{Bilinear interpolation}
Given a continuous coordinate $(u, v)$ and
its closest four pixels $(u_1, v_1), \dots, (u_4, v_4)$ with intensities denoted for simplicity as $I_i = I(u_i, v_i)$,
bilinear interpolation works as follows:
\begin{enumerate}
\item Compute the offset of $(u,v)$ w.r.t. the top-left pixel:
\[ \Delta u = u - u_1 \hspace{2em} \Delta v = v - v_1 \]
\begin{figure}[H]
\centering
\includegraphics[width=0.25\linewidth]{./img/_warping_bilinear1.pdf}
\end{figure}
\item Interpolate a point $(u_a, v_a)$ between $(u_1, v_1)$ and $(u_2, v_2)$ in such a way that it is perpendicular to $(u,v)$.
Do the same for a point $(u_b, v_b)$ between $(u_3, v_3)$ and $(u_4, v_4)$.
The intensities of the new points are computed by interpolating the intensities of their extrema:
\[ I_a = I_1 + (I_2 - I_1) \Delta u \hspace{2em} I_b = I_3 + (I_4 - I_3) \Delta u \]
\begin{figure}[H]
\centering
\includegraphics[width=0.7\linewidth]{./img/_warping_bilinear2.pdf}
\caption{In the figure, it is assumed that $I_1 < I_2$ and $I_3 > I_4$}
\end{figure}
\item The intensity $I(\Delta u, \Delta v) = I'(u', v')$ in the warped image is obtained by interpolating the intensities of $I_a$ and $I_b$:
\[
\begin{split}
I'(u', v') &= I_a + (I_b - I_a) \Delta v \\
&= \Big( I_1 + (I_2 - I_1) \Delta u \Big) + \Big( \big( I_3 + (I_4 - I_3) \Delta u \big) - \big( I_1 + (I_2 - I_1) \Delta u \big) \Big) \Delta v \\
&= (1-\Delta u)(1 - \Delta v) I_1 + \Delta u (1-\Delta v) I_2 + (1-\Delta u) \Delta v I_3 + \Delta u \Delta v I_4
\end{split}
\]
\end{enumerate}
\begin{remark}[Zoom]
Zooming using nearest-neighbor produces sharper edges while bilinear interpolation results in smoother images.
\begin{figure}[H]
\centering
\includegraphics[width=0.5\linewidth]{./img/warp_zoom.png}
\end{figure}
\end{remark}
\begin{remark}
Nearest-neighbor is suited to preserve transition (e.g. zoom a binary mask while maintaining the 0s and 1s).
\end{remark}
\end{description}
\subsection{Undistort warping}
Once a camera has been calibrated, the lens distortion parameters can be used to obtain the undistorted image through backward warping.
\[
\begin{split}
w_u &= u_\text{undist} + (k_1 r^2 + k_2 r^4)(u_\text{undist} - u_0) \\
w_v &= v_\text{undist} + (k_1 r^2 + k_2 r^4)(v_\text{undist} - v_0) \\
\end{split}
\]
\[
I'(u_\text{undist}, v_\text{undist}) = I\big( w^{-1}_u(u_\text{undist}, v_\text{undist}), w^{-1}_v(u_\text{undist}, v_\text{undist}) \big)
\]
Undistorted images enjoy some properties:
\begin{descriptionlist}
\item[Planar warping] \marginnote{Planar warping}
Any two images without lens distortion of a planar world scene ($z_W=0$) are related by a homography.
\begin{figure}[H]
\centering
\includegraphics[width=0.5\linewidth]{./img/_warp_application1.pdf}
\end{figure}
Given two images containing the same world point, their image points (in projective space) are respectively given by a homography $\matr{H}_1$ and $\matr{H}_2$
(note that with $z_w=0$, the PPM is a $3 \times 3$ matrix and therefore a homography):\\[-0.5em]
\begin{minipage}{0.5\linewidth}
\[
\begin{split}
\tilde{\vec{m}}_1 &= \matr{H}_1 \tilde{\vec{M}}_W \\
\tilde{\vec{m}}_1 &= \matr{H}_1 \matr{H}_2^{-1} \tilde{\vec{m}}_2 \\
\end{split}
\]
\end{minipage}
\begin{minipage}{0.5\linewidth}
\[
\begin{split}
\tilde{\vec{m}}_2 &= \matr{H}_2 \tilde{\vec{M}}_W \\
\tilde{\vec{m}}_2 &= \matr{H}_2 \matr{H}_1^{-1} \tilde{\vec{m}}_1 \\
\end{split}
\]
\end{minipage}\\[0.5em]
Then, $\matr{H}_1 \matr{H}_2^{-1} = \matr{H}_{21} = \matr{H}_{12}^{-1}$ is the homography that relates $\tilde{\vec{m}}_2$ to $\tilde{\vec{m}}_1$
and $\matr{H}_2 \matr{H}_1^{-1} = \matr{H}_{12} = \matr{H}_{21}^{-1}$ relates $\tilde{\vec{m}}_1$ to $\tilde{\vec{m}}_2$.
\begin{remark}
Only ground points on the planar section of the image can be correctly warped.
\end{remark}
\begin{example}[Inverse Perspective Mapping]
In autonomous driving, it is usually useful to have a bird-eye view of the road.
In a controlled environment, a calibrated camera can be mounted on a car to take a picture of the road in front of it.
Then, a (virtual) image of the road viewed from above is generated.
By finding the homography that relates the two images, it is possible to produce a bird-eye view of the road from the camera mounted on the vehicle.
Note that the homography needs to be computed only once.
\begin{figure}[H]
\centering
\includegraphics[width=0.7\linewidth]{./img/inverse_perspective_mapping.png}
\end{figure}
\end{example}
\item[Rotation warping] \marginnote{Rotation warping}
Any two images without lens distortion taken by rotating the camera about its optical center are related by a homography.
\begin{figure}[H]
\centering
\includegraphics[width=0.35\linewidth]{./img/_warp_application2.pdf}
\end{figure}
It is assumed that the first image is taken in such a way that the WRF and CRF are the same (i.e. no extrinsic parameters).
Then, a second image is taken by rotating the camera about its optical center.
It holds that:\\[-0.5em]
\begin{minipage}{0.5\linewidth}
\[
\begin{split}
\tilde{\vec{m}}_1 &= \matr{A} [\matr{I} | \nullvec] \tilde{\vec{M}}_W = \matr{A}\tilde{\vec{M}}_W \\
\tilde{\vec{m}}_1 &= \matr{A}\matr{R}^{-1}\matr{A}^{-1} \tilde{\vec{m}}_2 \\
\end{split}
\]
\end{minipage}
\begin{minipage}{0.5\linewidth}
\[
\begin{split}
\tilde{\vec{m}}_2 &= \matr{A} [\matr{R} | \nullvec] \tilde{\vec{M}}_W = \matr{A}\matr{R}\tilde{\vec{M}}_W \\
\tilde{\vec{m}}_2 &= \matr{A}\matr{R}\matr{A}^{-1} \tilde{\vec{m}}_1 \\
\end{split}
\]
\end{minipage}\\[0.5em]
Then, $\matr{A}\matr{R}^{-1}\matr{A}^{-1} = \matr{H}_{21} = \matr{H}_{12}^{-1}$ is the homography that relates $\tilde{\vec{m}}_2$ to $\tilde{\vec{m}}_1$
and $\matr{A}\matr{R}\matr{A}^{-1} = \matr{H}_{12} = \matr{H}_{21}^{-1}$ relates $\tilde{\vec{m}}_1$ to $\tilde{\vec{m}}_2$.
\begin{remark}
Any point of the image can be correctly warped.
\end{remark}
\begin{example}[Compensate pitch or yaw]
In autonomous driving, cameras should be ideally mounted with the optical axis parallel to the road plane and aligned with the direction of motion.
It is usually very difficult to obtain perfect alignment physically
but a calibrated camera can help to compensate pitch (i.e. rotation around the $x$-axis)
and yaw (i.e. rotation around the $y$-axis) by estimating the vanishing point of the lane lines.
\begin{figure}[H]
\centering
\includegraphics[width=0.85\linewidth]{./img/pitch_yaw_compensation.png}
\end{figure}
It is assumed that the vehicle is driving straight w.r.t. the lines and
that the WRF is attached to the vehicle in such a way that the $z$-axis is pointing in front of the vehicle.
It holds that any line parallel to the $z$-axis has direction $\begin{bmatrix} 0 & 0 & 1 \end{bmatrix}^T$
and their point at infinity in perspective space is at $\begin{bmatrix} 0 & 0 & 1 & 0 \end{bmatrix}^T$.
The coordinates of the vanishing point are then obtained as:
\[
\vec{m}_\infty \equiv \matr{A}[\matr{R} | 0] \begin{bmatrix} 0 \\ 0 \\ 1 \\ 0 \end{bmatrix}
\equiv \matr{A}\vec{r}_3
\equiv \matr{A} \begin{bmatrix} 0 \\ \sin\beta \\ \cos\beta \end{bmatrix}
\]
where $\vec{r}_3$ is the third column of the rotation matrix $\matr{R}_\text{pitch} = \begin{bmatrix}
1 & 0 & 0 \\ 0 & \cos\beta & \sin\beta \\ 0 & -\sin\beta & \cos\beta
\end{bmatrix}$ that applies a rotation of $\beta$ degree around the $x$-axis.
By computing the point at infinity, it is possible to estimate $\vec{r}_3 = \frac{\matr{A}^{-1} \vec{m}_\infty}{\Vert \matr{A}^{-1} \vec{m}_\infty \Vert_2}$
(as $\vec{r}_3$ is a unit vector) and from it we can find the entire rotation matrix $\matr{R}_\text{pitch}$.
Finally, the homography $\matr{A}\matr{R}_\text{pitch}\matr{A}^{-1}$ relates the pitched image to the ideal image.
\begin{remark}
The same procedure can be done for the yaw.
\end{remark}
\end{example}
\end{descriptionlist}