Commit 6363de4f by liulongfei

滤波算法参数设置

parent 42e844ad
......@@ -365,7 +365,7 @@ namespace VIZ.H2V.Module
private void Setting()
{
SystemSettingView view = new SystemSettingView();
NoneWindow window = new NoneWindow(1200, 1050, view);
NoneWindow window = new NoneWindow(1200, 1200, view);
window.Owner = this.GetWindow();
window.ShowDialog();
......
......@@ -9,7 +9,7 @@
xmlns:toolkit="http://schemas.xceed.com/wpf/xaml/toolkit"
d:DataContext="{d:DesignInstance Type=local:AlgorithmSinglePanelViewModel}"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
d:DesignHeight="800" d:DesignWidth="800">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
......@@ -139,6 +139,49 @@
<toolkit:DoubleUpDown Grid.Column="1" Minimum="0" Maximum="100" Increment="0.01" Height="40"
Value="{Binding Path=AreaCorrectionConfidence,Mode=TwoWay}"></toolkit:DoubleUpDown>
</Grid>
<!-- 裁切滤波窗口大小 -->
<Grid Grid.Row="7">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="380"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Text="裁切滤波窗口大小" Foreground="White" FontSize="18" VerticalAlignment="Center"></TextBlock>
<ComboBox Grid.Column="1" Style="{StaticResource ComboBox_Setting}" Height="40"
ItemsSource="{Binding Path=ClipFilterWindowWidthItems,Mode=OneWay}"
SelectedValue="{Binding Path=ClipFilterWindowWidth,Mode=TwoWay}">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Background="Transparent" IsHitTestVisible="False" Orientation="Horizontal">
<TextBlock Text="{Binding .}" VerticalAlignment="Center" HorizontalAlignment="Left"
Foreground="White" FontSize="14"></TextBlock>
<TextBlock Text="秒" VerticalAlignment="Center" HorizontalAlignment="Left" Margin="5,0,0,0"
Foreground="White" FontSize="14"></TextBlock>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</Grid>
<!-- 裁切滤波阶数 -->
<Grid Grid.Row="8">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="380"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Text="裁切滤波阶数" Foreground="White" FontSize="18" VerticalAlignment="Center"></TextBlock>
<ComboBox Grid.Column="1" Style="{StaticResource ComboBox_Setting}" Height="40"
ItemsSource="{Binding Path=ClipFilterPolyorderItems,Mode=OneWay}"
SelectedValue="{Binding Path=ClipFilterPolyorder,Mode=TwoWay}">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Background="Transparent" IsHitTestVisible="False" Orientation="Horizontal">
<TextBlock Text="{Binding .}" VerticalAlignment="Center" HorizontalAlignment="Left"
Foreground="White" FontSize="14"></TextBlock>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</Grid>
</Grid>
</Border>
</UserControl>
......@@ -160,6 +160,62 @@ namespace VIZ.H2V.Module
#endregion
#region ClipFilterWindowWidthItems -- 裁切过滤窗口宽度项
private List<int> clipFilterWindowWidthItems = new List<int> { 1, 2, 3, 4, 5, 6 };
/// <summary>
/// 裁切过滤窗口宽度项
/// </summary>
public List<int> ClipFilterWindowWidthItems
{
get { return clipFilterWindowWidthItems; }
set { clipFilterWindowWidthItems = value; this.RaisePropertyChanged(nameof(ClipFilterWindowWidthItems)); }
}
#endregion
#region ClipFilterWindowWidth -- 裁切过滤窗口宽度
private int clipFilterWindowWidth;
/// <summary>
/// 裁切过滤窗口宽度
/// </summary>
public int ClipFilterWindowWidth
{
get { return clipFilterWindowWidth; }
set { clipFilterWindowWidth = value; this.RaisePropertyChanged(nameof(ClipFilterWindowWidth)); }
}
#endregion
#region ClipFilterPolyorderItems -- 裁切过滤阶数项
private List<int> clipFilterPolyorderItems = new List<int> { 1, 2, 3, 4 };
/// <summary>
/// 裁切过滤阶数项
/// </summary>
public List<int> ClipFilterPolyorderItems
{
get { return clipFilterPolyorderItems; }
set { clipFilterPolyorderItems = value; this.RaisePropertyChanged(nameof(ClipFilterPolyorderItems)); }
}
#endregion
#region ClipFilterPolyorder -- 裁切过滤阶数
private int clipFilterPolyorder;
/// <summary>
/// 裁切过滤阶数
/// </summary>
public int ClipFilterPolyorder
{
get { return clipFilterPolyorder; }
set { clipFilterPolyorder = value; this.RaisePropertyChanged(nameof(ClipFilterPolyorder)); }
}
#endregion
// ======================================================================================
// === Command ===
// ======================================================================================
......
......@@ -74,6 +74,8 @@ namespace VIZ.H2V.Module
this.KeepPrevFrame = config.KeepPrevFrame;
this.AreaCorrectionRatio = config.AreaCorrectionRatio;
this.AreaCorrectionConfidence = config.AreaCorrectionConfidence;
this.ClipFilterWindowWidth = config.ClipFilterWindowWidth;
this.ClipFilterPolyorder = config.ClipFilterPolyorder;
// 场景信息
this.SelectedBorderScence = this.BorderScences?.FirstOrDefault(p => p.Key == this.Config.BorderScene) ?? this.BorderScences?.FirstOrDefault();
......@@ -106,6 +108,12 @@ namespace VIZ.H2V.Module
if (this.AreaCorrectionConfidence != this.Config.AreaCorrectionConfidence)
return true;
if (this.ClipFilterWindowWidth != this.Config.ClipFilterWindowWidth)
return true;
if (this.ClipFilterPolyorder != this.Config.ClipFilterPolyorder)
return true;
return false;
}
......@@ -118,6 +126,12 @@ namespace VIZ.H2V.Module
if (this.SelectedGpuInfo.Physics != this.ViewConfig.GPU)
return true;
if (this.ClipFilterWindowWidth != this.Config.ClipFilterWindowWidth)
return true;
if (this.ClipFilterPolyorder != this.Config.ClipFilterPolyorder)
return true;
return false;
}
......@@ -132,6 +146,8 @@ namespace VIZ.H2V.Module
this.Config.BorderScene = this.SelectedBorderScence.Key;
this.Config.AreaCorrectionRatio = this.AreaCorrectionRatio;
this.Config.AreaCorrectionConfidence = this.AreaCorrectionConfidence;
this.Config.ClipFilterWindowWidth = this.ClipFilterWindowWidth;
this.Config.ClipFilterPolyorder = this.ClipFilterPolyorder;
this.ViewConfig.GPU = this.SelectedGpuInfo?.Physics ?? 0;
ApplicationDomainEx.LiteDbContext.AlgorithmSingle.Upsert(this.Config);
......
......@@ -402,6 +402,17 @@ namespace VIZ.H2V.Module
args["--device"] = $"{device}"; // GPU设备ID
args["--vis_port"] = $"{CLIENT_PORT}"; // 软件端口
/* ============================================================================= */
/* === 目前暂时只有"单人机位"拥有裁切窗口过滤参数 === */
if (this.StrategyType == AlgorithmStrategyType.Single)
{
// 裁切滤波窗口宽度
args["--window_length"] = $"{this.Support.AlgorithmConfig.ClipFilterWindowWidth * 50 + 1} ";
// 裁切滤波阶数
args["--polyorder"] = $"{this.Support.AlgorithmConfig.ClipFilterPolyorder}";
}
/* ============================================================================= */
Process mainProcess = this.CreateSetupProcess(strategy.MainPath, args);
if (!mainProcess.Start())
......
......@@ -10,6 +10,7 @@ using VIZ.H2V.Domain;
using log4net;
using VIZ.H2V.Storage;
using VIZ.Framework.Storage;
using System.Windows;
namespace VIZ.H2V.Module
{
......@@ -35,6 +36,10 @@ namespace VIZ.H2V.Module
public ManualController(IManualSupport support)
{
this.Support = support;
SystemConfig config = ApplicationDomainEx.LiteDbContext.SystemConfig.FindAll().FirstOrDefault();
int windowWidth = config.ClipFilterWindowWidth * 50 + 1;
this.ClipBoxSmoothWithSavitzkyGolay = new Navigation3DSmoothWithSavitzkyGolay(windowWidth, config.ClipFilterPolyorder, windowWidth);
}
/// <summary>
......@@ -45,7 +50,7 @@ namespace VIZ.H2V.Module
/// <summary>
/// 使用 Savitzky Golay 滤波器的算法
/// </summary>
public Navigation3DSmoothWithSavitzkyGolay ClipBoxSmoothWithSavitzkyGolay = new Navigation3DSmoothWithSavitzkyGolay(201, 2, 201);
public Navigation3DSmoothWithSavitzkyGolay ClipBoxSmoothWithSavitzkyGolay;
/// <summary>
/// 裁切框目标X坐标
......
......@@ -9,7 +9,7 @@
xmlns:toolkit="http://schemas.xceed.com/wpf/xaml/toolkit"
d:DataContext="{d:DesignInstance Type=local:StyleSettingPanelViewModel}"
mc:Ignorable="d"
d:DesignHeight="900" d:DesignWidth="800">
d:DesignHeight="1100" d:DesignWidth="800">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
......@@ -42,6 +42,8 @@
<RowDefinition Height="60"></RowDefinition>
<RowDefinition Height="60"></RowDefinition>
<RowDefinition Height="60"></RowDefinition>
<RowDefinition Height="60"></RowDefinition>
<RowDefinition Height="60"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<!-- 剪切框颜色 -->
......@@ -188,6 +190,61 @@
<TextBlock Text="重启后生效" VerticalAlignment="Center" Foreground="#aaffffff"></TextBlock>
</StackPanel>
</Grid>
<!-- 裁切滤波窗口大小 -->
<Grid Grid.Row="11">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="120"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Text="裁切滤波窗口大小" Foreground="White" FontSize="18" VerticalAlignment="Center"></TextBlock>
<ComboBox Grid.Column="1" Style="{StaticResource ComboBox_Setting}" Height="40"
ItemsSource="{Binding Path=ClipFilterWindowWidthItems,Mode=OneWay}"
SelectedValue="{Binding Path=ClipFilterWindowWidth,Mode=TwoWay}">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Background="Transparent" IsHitTestVisible="False" Orientation="Horizontal">
<TextBlock Text="{Binding .}" VerticalAlignment="Center" HorizontalAlignment="Left"
Foreground="White" FontSize="14"></TextBlock>
<TextBlock Text="秒" VerticalAlignment="Center" HorizontalAlignment="Left" Margin="5,0,0,0"
Foreground="White" FontSize="14"></TextBlock>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<StackPanel Grid.Column="2" Orientation="Horizontal" HorizontalAlignment="Right">
<Image Source="/VIZ.H2V.Module.Resource;component/Icons/exclamatory_mark_32x32.png"
Width="18" Height="18" Margin="10,0,10,0" VerticalAlignment="Center"></Image>
<TextBlock Text="重启后生效" VerticalAlignment="Center" Foreground="#aaffffff"></TextBlock>
</StackPanel>
</Grid>
<!-- 裁切滤波阶数 -->
<Grid Grid.Row="12">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="120"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Text="裁切滤波阶数" Foreground="White" FontSize="18" VerticalAlignment="Center"></TextBlock>
<ComboBox Grid.Column="1" Style="{StaticResource ComboBox_Setting}" Height="40"
ItemsSource="{Binding Path=ClipFilterPolyorderItems,Mode=OneWay}"
SelectedValue="{Binding Path=ClipFilterPolyorder,Mode=TwoWay}">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Background="Transparent" IsHitTestVisible="False" Orientation="Horizontal">
<TextBlock Text="{Binding .}" VerticalAlignment="Center" HorizontalAlignment="Left"
Foreground="White" FontSize="14"></TextBlock>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<StackPanel Grid.Column="2" Orientation="Horizontal" HorizontalAlignment="Right">
<Image Source="/VIZ.H2V.Module.Resource;component/Icons/exclamatory_mark_32x32.png"
Width="18" Height="18" Margin="10,0,10,0" VerticalAlignment="Center"></Image>
<TextBlock Text="重启后生效" VerticalAlignment="Center" Foreground="#aaffffff"></TextBlock>
</StackPanel>
</Grid>
</Grid>
</Border>
</UserControl>
\ No newline at end of file
......@@ -232,6 +232,62 @@ namespace VIZ.H2V.Module
#endregion
#region ClipFilterWindowWidthItems -- 裁切过滤窗口宽度项
private List<int> clipFilterWindowWidthItems = new List<int> { 1, 2, 3, 4, 5, 6 };
/// <summary>
/// 裁切过滤窗口宽度项
/// </summary>
public List<int> ClipFilterWindowWidthItems
{
get { return clipFilterWindowWidthItems; }
set { clipFilterWindowWidthItems = value; this.RaisePropertyChanged(nameof(ClipFilterWindowWidthItems)); }
}
#endregion
#region ClipFilterWindowWidth -- 裁切过滤窗口宽度
private int clipFilterWindowWidth;
/// <summary>
/// 裁切过滤窗口宽度
/// </summary>
public int ClipFilterWindowWidth
{
get { return clipFilterWindowWidth; }
set { clipFilterWindowWidth = value; this.RaisePropertyChanged(nameof(ClipFilterWindowWidth)); }
}
#endregion
#region ClipFilterPolyorderItems -- 裁切过滤阶数项
private List<int> clipFilterPolyorderItems = new List<int> { 1, 2, 3, 4 };
/// <summary>
/// 裁切过滤阶数项
/// </summary>
public List<int> ClipFilterPolyorderItems
{
get { return clipFilterPolyorderItems; }
set { clipFilterPolyorderItems = value; this.RaisePropertyChanged(nameof(ClipFilterPolyorderItems)); }
}
#endregion
#region ClipFilterPolyorder -- 裁切过滤阶数
private int clipFilterPolyorder;
/// <summary>
/// 裁切过滤阶数
/// </summary>
public int ClipFilterPolyorder
{
get { return clipFilterPolyorder; }
set { clipFilterPolyorder = value; this.RaisePropertyChanged(nameof(ClipFilterPolyorder)); }
}
#endregion
// ======================================================================================
// === Commond ===
// ======================================================================================
......@@ -269,6 +325,9 @@ namespace VIZ.H2V.Module
this.SelectedVideoClipMode = this.VideoClipModeItems.FirstOrDefault(p => p.Value == ApplicationDomainEx.VIDEO_CLIP_BOX_WIDTH)
?? this.VideoClipModeItems[0];
this.ClipFilterWindowWidth = this.SystemConfig.ClipFilterWindowWidth;
this.ClipFilterPolyorder = this.SystemConfig.ClipFilterPolyorder;
// 加载3D鼠标映射模型
this.Load3DNavigationMapping();
}
......@@ -342,6 +401,12 @@ namespace VIZ.H2V.Module
if (this.SelectedVideoClipMode.Value != ApplicationDomainEx.IniStorage.GetValue<VideoConfig, int>(p => p.VIDEO_CLIP_BOX_WIDTH))
return true;
if (this.ClipFilterWindowWidth != this.SystemConfig.ClipFilterWindowWidth)
return true;
if (this.ClipFilterPolyorder != this.SystemConfig.ClipFilterPolyorder)
return true;
return false;
}
......@@ -363,6 +428,8 @@ namespace VIZ.H2V.Module
this.SystemConfig.ManualNavigation3DMappingName = this.SelectedNavigation3DMappingGroupModel.Name;
this.SystemConfig.ManualNavigation3DMappingMultiple = this.Navigation3DMappingMultiple;
this.SystemConfig.IsWhenNavigationTouchedChangeToManualMode = this.IsWhenNavigationTouchedChangeToManualMode;
this.SystemConfig.ClipFilterWindowWidth = this.ClipFilterWindowWidth;
this.SystemConfig.ClipFilterPolyorder = this.ClipFilterPolyorder;
ApplicationDomainEx.LiteDbContext.SystemConfig.Update(this.SystemConfig);
......
......@@ -58,5 +58,15 @@ namespace VIZ.H2V.Storage
/// 手动校准半径
/// </summary>
public double ManualCorrectionRadius { get; set; } = 200;
/// <summary>
/// 裁切滤波窗口宽度(单位:秒)
/// </summary>
public int ClipFilterWindowWidth { get; set; } = 4;
/// <summary>
/// 裁切滤波阶数
/// </summary>
public int ClipFilterPolyorder { get; set; } = 2;
}
}
......@@ -119,5 +119,15 @@ namespace VIZ.H2V.Storage
/// 预览流 3
/// </summary>
public string PreviewStreamName3 { get; set; }
/// <summary>
/// 裁切滤波窗口宽度(单位:秒)
/// </summary>
public int ClipFilterWindowWidth { get; set; } = 4;
/// <summary>
/// 裁切滤波阶数
/// </summary>
public int ClipFilterPolyorder { get; set; } = 2;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment