mirror of
https://github.com/alicevision/Meshroom.git
synced 2025-08-06 10:18:42 +02:00
[ui] Viewer Stats: more global SfM statistics
This commit is contained in:
parent
4f4d576cdf
commit
48d4fcacd9
1 changed files with 202 additions and 32 deletions
|
@ -31,41 +31,11 @@ FloatingPane {
|
||||||
onWheel: {}
|
onWheel: {}
|
||||||
}
|
}
|
||||||
|
|
||||||
InteractiveChartView {
|
|
||||||
id: landmarksPerViewChart
|
|
||||||
width: parent.width * 0.5
|
|
||||||
height: parent.height * 0.5
|
|
||||||
|
|
||||||
title: "Landmarks Per View"
|
|
||||||
legend.visible: false
|
|
||||||
antialiasing: true
|
|
||||||
|
|
||||||
ValueAxis {
|
|
||||||
id: landmarksPerViewValueAxisX
|
|
||||||
titleText: "Ordered Views"
|
|
||||||
min: 0.0
|
|
||||||
max: sfmDataStat.landmarksPerViewMaxAxisX
|
|
||||||
}
|
|
||||||
ValueAxis {
|
|
||||||
id: landmarksPerViewValueAxisY
|
|
||||||
labelFormat: "%i"
|
|
||||||
titleText: "Number of Landmarks"
|
|
||||||
min: 0
|
|
||||||
max: sfmDataStat.landmarksPerViewMaxAxisY
|
|
||||||
}
|
|
||||||
LineSeries {
|
|
||||||
id: landmarksPerViewLineSerie
|
|
||||||
axisX: landmarksPerViewValueAxisX
|
|
||||||
axisY: landmarksPerViewValueAxisY
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
InteractiveChartView {
|
InteractiveChartView {
|
||||||
id: residualsPerViewChart
|
id: residualsPerViewChart
|
||||||
width: parent.width * 0.5
|
width: parent.width * 0.5
|
||||||
height: parent.height * 0.5
|
height: parent.height * 0.5
|
||||||
anchors.top: parent.top
|
|
||||||
anchors.topMargin: (parent.height) * 0.5
|
|
||||||
|
|
||||||
title: "Residuals Per View"
|
title: "Residuals Per View"
|
||||||
legend.visible: false
|
legend.visible: false
|
||||||
|
@ -80,7 +50,7 @@ FloatingPane {
|
||||||
}
|
}
|
||||||
ValueAxis {
|
ValueAxis {
|
||||||
id: residualsPerViewValueAxisY
|
id: residualsPerViewValueAxisY
|
||||||
titleText: "Percentage of residuals"
|
titleText: "Reprojection Error (pix)"
|
||||||
min: 0
|
min: 0
|
||||||
max: sfmDataStat.residualsPerViewMaxAxisY
|
max: sfmDataStat.residualsPerViewMaxAxisY
|
||||||
tickAnchor: 0
|
tickAnchor: 0
|
||||||
|
@ -111,6 +81,18 @@ FloatingPane {
|
||||||
axisY: residualsPerViewValueAxisY
|
axisY: residualsPerViewValueAxisY
|
||||||
name: "Median"
|
name: "Median"
|
||||||
}
|
}
|
||||||
|
LineSeries {
|
||||||
|
id: residualsFirstQuartilePerViewLineSerie
|
||||||
|
axisX: residualsPerViewValueAxisX
|
||||||
|
axisY: residualsPerViewValueAxisY
|
||||||
|
name: "Q1"
|
||||||
|
}
|
||||||
|
LineSeries {
|
||||||
|
id: residualsThirdQuartilePerViewLineSerie
|
||||||
|
axisX: residualsPerViewValueAxisX
|
||||||
|
axisY: residualsPerViewValueAxisY
|
||||||
|
name: "Q3"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
|
@ -146,6 +128,183 @@ FloatingPane {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
InteractiveChartView {
|
||||||
|
id: observationsLengthsPerViewChart
|
||||||
|
width: parent.width * 0.5
|
||||||
|
height: parent.height * 0.5
|
||||||
|
anchors.top: parent.top
|
||||||
|
anchors.topMargin: (parent.height) * 0.5
|
||||||
|
|
||||||
|
title: "Observations Lengths Per View"
|
||||||
|
legend.visible: false
|
||||||
|
antialiasing: true
|
||||||
|
|
||||||
|
ValueAxis {
|
||||||
|
id: observationsLengthsPerViewValueAxisX
|
||||||
|
labelFormat: "%i"
|
||||||
|
titleText: "Ordered Views"
|
||||||
|
min: 0
|
||||||
|
max: sfmDataStat.observationsLengthsPerViewMaxAxisX
|
||||||
|
}
|
||||||
|
ValueAxis {
|
||||||
|
id: observationsLengthsPerViewValueAxisY
|
||||||
|
titleText: "Observations Lengths"
|
||||||
|
min: 0
|
||||||
|
max: sfmDataStat.observationsLengthsPerViewMaxAxisY
|
||||||
|
tickAnchor: 0
|
||||||
|
tickInterval: 0.50
|
||||||
|
tickCount: sfmDataStat.observationsLengthsPerViewMaxAxisY * 2
|
||||||
|
}
|
||||||
|
|
||||||
|
LineSeries {
|
||||||
|
id: observationsLengthsMinPerViewLineSerie
|
||||||
|
axisX: observationsLengthsPerViewValueAxisX
|
||||||
|
axisY: observationsLengthsPerViewValueAxisY
|
||||||
|
name: "Min"
|
||||||
|
}
|
||||||
|
LineSeries {
|
||||||
|
id: observationsLengthsMaxPerViewLineSerie
|
||||||
|
axisX: observationsLengthsPerViewValueAxisX
|
||||||
|
axisY: observationsLengthsPerViewValueAxisY
|
||||||
|
name: "Max"
|
||||||
|
}
|
||||||
|
LineSeries {
|
||||||
|
id: observationsLengthsMeanPerViewLineSerie
|
||||||
|
axisX: observationsLengthsPerViewValueAxisX
|
||||||
|
axisY: observationsLengthsPerViewValueAxisY
|
||||||
|
name: "Mean"
|
||||||
|
}
|
||||||
|
LineSeries {
|
||||||
|
id: observationsLengthsMedianPerViewLineSerie
|
||||||
|
axisX: observationsLengthsPerViewValueAxisX
|
||||||
|
axisY: observationsLengthsPerViewValueAxisY
|
||||||
|
name: "Median"
|
||||||
|
}
|
||||||
|
LineSeries {
|
||||||
|
id: observationsLengthsFirstQuartilePerViewLineSerie
|
||||||
|
axisX: observationsLengthsPerViewValueAxisX
|
||||||
|
axisY: observationsLengthsPerViewValueAxisY
|
||||||
|
name: "Q1"
|
||||||
|
}
|
||||||
|
LineSeries {
|
||||||
|
id: observationsLengthsThirdQuartilePerViewLineSerie
|
||||||
|
axisX: observationsLengthsPerViewValueAxisX
|
||||||
|
axisY: observationsLengthsPerViewValueAxisY
|
||||||
|
name: "Q3"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Item {
|
||||||
|
id: observationsLengthsPerViewBtnContainer
|
||||||
|
|
||||||
|
Layout.fillWidth: true
|
||||||
|
anchors.bottom: observationsLengthsPerViewChart.bottom
|
||||||
|
anchors.bottomMargin: 35
|
||||||
|
anchors.left: observationsLengthsPerViewChart.left
|
||||||
|
anchors.leftMargin: observationsLengthsPerViewChart.width * 0.25
|
||||||
|
|
||||||
|
RowLayout {
|
||||||
|
|
||||||
|
ChartViewCheckBox {
|
||||||
|
id: allModes
|
||||||
|
text: "ALL"
|
||||||
|
color: textColor
|
||||||
|
checkState: observationsLengthsPerViewLegend.buttonGroup.checkState
|
||||||
|
onClicked: {
|
||||||
|
var _checked = checked;
|
||||||
|
for(var i = 0; i < observationsLengthsPerViewChart.count; ++i)
|
||||||
|
{
|
||||||
|
observationsLengthsPerViewChart.series(i).visible = _checked;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ChartViewLegend {
|
||||||
|
id: observationsLengthsPerViewLegend
|
||||||
|
chartView: observationsLengthsPerViewChart
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
InteractiveChartView {
|
||||||
|
id: landmarksPerViewChart
|
||||||
|
width: parent.width * 0.5
|
||||||
|
height: parent.height * 0.5
|
||||||
|
anchors.left: parent.left
|
||||||
|
anchors.leftMargin: (parent.width) * 0.5
|
||||||
|
anchors.top: parent.top
|
||||||
|
|
||||||
|
title: "Landmarks Per View"
|
||||||
|
legend.visible: false
|
||||||
|
antialiasing: true
|
||||||
|
|
||||||
|
ValueAxis {
|
||||||
|
id: landmarksPerViewValueAxisX
|
||||||
|
titleText: "Ordered Views"
|
||||||
|
min: 0.0
|
||||||
|
max: sfmDataStat.landmarksPerViewMaxAxisX
|
||||||
|
}
|
||||||
|
ValueAxis {
|
||||||
|
id: landmarksPerViewValueAxisY
|
||||||
|
labelFormat: "%i"
|
||||||
|
titleText: "Number of Landmarks"
|
||||||
|
min: 0
|
||||||
|
max: sfmDataStat.landmarksPerViewMaxAxisY
|
||||||
|
}
|
||||||
|
LineSeries {
|
||||||
|
id: landmarksPerViewLineSerie
|
||||||
|
axisX: landmarksPerViewValueAxisX
|
||||||
|
axisY: landmarksPerViewValueAxisY
|
||||||
|
name: "Landmarks"
|
||||||
|
}
|
||||||
|
LineSeries {
|
||||||
|
id: featuresPerViewLineSerie
|
||||||
|
axisX: landmarksPerViewValueAxisX
|
||||||
|
axisY: landmarksPerViewValueAxisY
|
||||||
|
name: "Features"
|
||||||
|
}
|
||||||
|
LineSeries {
|
||||||
|
id: tracksPerViewLineSerie
|
||||||
|
axisX: landmarksPerViewValueAxisX
|
||||||
|
axisY: landmarksPerViewValueAxisY
|
||||||
|
name: "Tracks"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Item {
|
||||||
|
id: landmarksFeatTracksPerViewBtnContainer
|
||||||
|
|
||||||
|
Layout.fillWidth: true
|
||||||
|
anchors.bottom: landmarksPerViewChart.bottom
|
||||||
|
anchors.bottomMargin: 35
|
||||||
|
anchors.left: landmarksPerViewChart.left
|
||||||
|
anchors.leftMargin: landmarksPerViewChart.width * 0.25
|
||||||
|
|
||||||
|
RowLayout {
|
||||||
|
|
||||||
|
ChartViewCheckBox {
|
||||||
|
id: allFeatures
|
||||||
|
text: "ALL"
|
||||||
|
color: textColor
|
||||||
|
checkState: landmarksFeatTracksPerViewLegend.buttonGroup.checkState
|
||||||
|
onClicked: {
|
||||||
|
var _checked = checked;
|
||||||
|
for(var i = 0; i < landmarksPerViewChart.count; ++i)
|
||||||
|
{
|
||||||
|
landmarksPerViewChart.series(i).visible = _checked;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ChartViewLegend {
|
||||||
|
id: landmarksFeatTracksPerViewLegend
|
||||||
|
chartView: landmarksPerViewChart
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Stats from the sfmData
|
// Stats from the sfmData
|
||||||
AliceVision.MSfMDataStats {
|
AliceVision.MSfMDataStats {
|
||||||
id: sfmDataStat
|
id: sfmDataStat
|
||||||
|
@ -153,10 +312,21 @@ FloatingPane {
|
||||||
onStatsChanged: {
|
onStatsChanged: {
|
||||||
console.warn("QML AliceVision.MSfMDataStats statsChanged: " + sfmDataStat.msfmData);
|
console.warn("QML AliceVision.MSfMDataStats statsChanged: " + sfmDataStat.msfmData);
|
||||||
fillLandmarksPerViewSerie(landmarksPerViewLineSerie);
|
fillLandmarksPerViewSerie(landmarksPerViewLineSerie);
|
||||||
|
fillFeaturesPerViewSerie(featuresPerViewLineSerie);
|
||||||
|
fillTracksPerViewSerie(tracksPerViewLineSerie);
|
||||||
fillResidualsMinPerViewSerie(residualsMinPerViewLineSerie);
|
fillResidualsMinPerViewSerie(residualsMinPerViewLineSerie);
|
||||||
fillResidualsMaxPerViewSerie(residualsMaxPerViewLineSerie);
|
fillResidualsMaxPerViewSerie(residualsMaxPerViewLineSerie);
|
||||||
fillResidualsMeanPerViewSerie(residualsMeanPerViewLineSerie);
|
fillResidualsMeanPerViewSerie(residualsMeanPerViewLineSerie);
|
||||||
fillResidualsMedianPerViewSerie(residualsMedianPerViewLineSerie);
|
fillResidualsMedianPerViewSerie(residualsMedianPerViewLineSerie);
|
||||||
|
fillResidualsFirstQuartilePerViewSerie(residualsFirstQuartilePerViewLineSerie);
|
||||||
|
fillResidualsThirdQuartilePerViewSerie(residualsThirdQuartilePerViewLineSerie);
|
||||||
|
fillObservationsLengthsMinPerViewSerie(observationsLengthsMinPerViewLineSerie);
|
||||||
|
fillObservationsLengthsMaxPerViewSerie(observationsLengthsMaxPerViewLineSerie);
|
||||||
|
fillObservationsLengthsMeanPerViewSerie(observationsLengthsMeanPerViewLineSerie);
|
||||||
|
fillObservationsLengthsMedianPerViewSerie(observationsLengthsMedianPerViewLineSerie);
|
||||||
|
fillObservationsLengthsFirstQuartilePerViewSerie(observationsLengthsFirstQuartilePerViewLineSerie);
|
||||||
|
fillObservationsLengthsThirdQuartilePerViewSerie(observationsLengthsThirdQuartilePerViewLineSerie);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue