Skip to content

Commit

Permalink
No commit message
Browse files Browse the repository at this point in the history
  • Loading branch information
hauerCodes committed Dec 17, 2014
1 parent 22c72dd commit 96e94bb
Show file tree
Hide file tree
Showing 34 changed files with 837 additions and 417 deletions.
9 changes: 9 additions & 0 deletions NumberRecognizer/NumberRecognizer.App/Style/AppStyle.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -83,4 +83,13 @@
</ResourceDictionary>
</chart:ResourceDictionaryCollection>

<chart:ResourceDictionaryCollection x:Key="CustomNegativColors">
<ResourceDictionary>
<SolidColorBrush x:Key="Brush1" Color="#FFFF5858" />
</ResourceDictionary>
<ResourceDictionary>
<SolidColorBrush x:Key="Brush2" Color="#FFFF1212" />
</ResourceDictionary>
</chart:ResourceDictionaryCollection>

</ResourceDictionary>
Original file line number Diff line number Diff line change
Expand Up @@ -77,28 +77,48 @@

<!-- Result View -->
<Grid Grid.Column="1">
<ListView ItemsSource="{Binding ChartResult}">
<ListView ItemsSource="{Binding ChartResult}" >
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock FontSize="60" Text="{Binding Number}" VerticalAlignment="Center" />
<Viewbox Height="300">
<chart:ClusteredColumnChart
Background="Transparent"
Style="{StaticResource ChartStyleVariableSize}"
ChartTitle=""
Palette="{StaticResource CustomColors}"
ChartTitleVisibility="Collapsed"
ChartLegendVisibility="Collapsed"
ChartSubTitle="">
<chart:ClusteredColumnChart.Series>
<chart:ChartSeries
SeriesTitle="Fitness"
<StackPanel Orientation="Horizontal">
<chart:ClusteredColumnChart
Background="Transparent"
Style="{StaticResource ChartStyleVariableSize}"
ChartTitle=""
Palette="{StaticResource CustomColors}"
ChartTitleVisibility="Collapsed"
ChartLegendVisibility="Collapsed"
ChartSubTitle="">
<chart:ClusteredColumnChart.Series>
<chart:ChartSeries
SeriesTitle="Positive Patterns"
ItemsSource="{Binding Values}"
DisplayMember="Name"
ValueMember="Value" />
</chart:ClusteredColumnChart.Series>
</chart:ClusteredColumnChart>

</chart:ClusteredColumnChart.Series>
</chart:ClusteredColumnChart>
<chart:ClusteredColumnChart
Background="Transparent"
Style="{StaticResource ChartStyleVariableSize}"
ChartTitle=""
Palette="{StaticResource CustomNegativColors}"
ChartTitleVisibility="Visible"
ChartLegendVisibility="Collapsed"
ChartSubTitle="">
<chart:ClusteredColumnChart.Series>
<chart:ChartSeries
SeriesTitle="Negative Patterns"
ItemsSource="{Binding NegValues}"
DisplayMember="Name"
ValueMember="Value"
/>
</chart:ClusteredColumnChart.Series>
</chart:ClusteredColumnChart>
</StackPanel>
</Viewbox>
</StackPanel>
</DataTemplate>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ public LocalTrainingImage SelectedImage
private void InitializeCommands()
{
this.UploadCommand = new DependentRelayCommand(this.CreateNetwork, () => this.ImageGroups.Count == 10 && this.IsLoading == false, this, () => this.ImageGroups, () => this.IsLoading);
this.DeleteImageCommand = new DependentRelayCommand(this.DeleteImage, () => this.SelectedImage != null && this.IsLoading == false, this, () => this.selectedImage, () => this.IsLoading);
this.DeleteImageCommand = new DependentRelayCommand(this.DeleteImage, () => this.SelectedImage != null && this.IsLoading == false, this, () => this.SelectedImage, () => this.IsLoading);
}

/// <summary>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,49 +1,56 @@
//-----------------------------------------------------------------------
// <copyright file="NetworkRecognizeViewModel.cs" company="FH Wr.Neustadt">
// Copyright Markus Zytek. All rights reserved.
// </copyright>
// <author>Markus Zytek</author>
// <summary>Network Recognize ViewModel.</summary>
//-----------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
using Windows.UI.Xaml.Media.Imaging;
using GalaSoft.MvvmLight;
using NumberRecognizer.Cloud.Contract.Data;
using PropertyChanged;
using NumberRecognition.Labeling;
using NumberRecognizer.App.Common;
using NumberRecognizer.App.Control;
using NumberRecognizer.App.DataModel;
using NumberRecognizer.App.Help;
using NumberRecognizer.App.NumberRecognizerService;
using RelayCommand = GalaSoft.MvvmLight.Command.RelayCommand;

namespace NumberRecognizer.App.ViewModel
{
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Linq;
using System.Windows.Input;
using GalaSoft.MvvmLight;
using Mutzl.MvvmLight;
using NumberRecognition.Labeling;
using NumberRecognizer.App.Control;
using NumberRecognizer.App.Help;
using NumberRecognizer.App.NumberRecognizerService;
using NumberRecognizer.Cloud.Contract.Data;
using PropertyChanged;
using RelayCommand = GalaSoft.MvvmLight.Command.RelayCommand;

/// <summary>
/// Network Recognize ViewModel.
///
/// </summary>
[ImplementPropertyChanged]
public class NetworkRecognizeViewModel : ViewModelBase
{

/// <summary>
/// Initializes a new instance of the <see cref="NetworkRecognizeViewModel"/> class.
/// </summary>
/// <param name="networkInfo">The network information.</param>
public NetworkRecognizeViewModel(NetworkInfo networkInfo)
{
this.Network = networkInfo;
this.InitializeCommands();
}

/// <summary>
/// Gets or sets the network.
/// Initializes the commands.
/// </summary>
private void InitializeCommands()
{
this.RecognizeNumber = new RelayCommand(this.ExecuteRecognizeNumber);
this.ClearResult = new RelayCommand(this.ClearPage);
this.ResetInkCanvasCommand = new RelayCommand(this.ResetInkCanvas);
}

/// <summary>
/// Gets or sets the network identifier.
/// </summary>
/// <value>
/// The network.
/// The network identifier.
/// </value>
public NetworkInfo Network { get; set; }

Expand All @@ -63,14 +70,6 @@ public NetworkRecognizeViewModel(NetworkInfo networkInfo)
/// </value>
public NumberRecognitionResult Result { get; private set; }

/// <summary>
/// Gets or sets a value indicating whether this instance is loading.
/// </summary>
/// <value>
/// <c>true</c> if this instance is loading; otherwise, <c>false</c>.
/// </value>
public bool IsLoading { get; set; }

/// <summary>
/// Gets or sets the recognize number.
/// </summary>
Expand Down Expand Up @@ -111,16 +110,6 @@ public NetworkRecognizeViewModel(NetworkInfo networkInfo)
/// </value>
public ObservableCollection<RecognitionImage> RecognitionImages { get; set; }

/// <summary>
/// Initializes the commands.
/// </summary>
private void InitializeCommands()
{
this.RecognizeNumber = new DependentRelayCommand(this.ExecuteRecognizeNumber, () => this.IsLoading == false, this, () => this.IsLoading);
this.ClearResult = new RelayCommand(this.ClearPage);
this.ResetInkCanvasCommand = new RelayCommand(this.ResetInkCanvas);
}

/// <summary>
/// Resets the ink canvas.
/// </summary>
Expand All @@ -137,78 +126,90 @@ private void ResetInkCanvas()
/// </summary>
private async void ExecuteRecognizeNumber()
{
if (this.InkCanvas == null)
if (InkCanvas == null)
{
return;
}
else
{
this.IsLoading = true;
this.RecognitionImages = new ObservableCollection<RecognitionImage>();

await LabelingHelperRT.ConnectedComponentLabelingForInkCanvasRT(this.InkCanvas);
foreach (ConnectedComponent component in this.InkCanvas.Labeling.ConnectedComponents.OrderBy(p => p.MinBoundingRect.Left).ToList())
{
try
{
RecognitionImage recognitionImage = new RecognitionImage
{
Height = (int)ImageHelperRT.ImageHeight,
Width = (int)ImageHelperRT.ImageWidth
};
recognitionImage.TransformFrom2DArrayToImageData(component.ScaledPixels);

this.RecognitionImages.Add(recognitionImage);
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
}
}
RecognitionImages = new ObservableCollection<RecognitionImage>();

await LabelingHelperRT.ConnectedComponentLabelingForInkCanvasRT(InkCanvas);
foreach (ConnectedComponent component in InkCanvas.Labeling.ConnectedComponents.OrderBy(p => p.MinBoundingRect.Left).ToList())
{
try
{
NumberRecognizerServiceClient serviceProxy = new NumberRecognizerServiceClient();
this.Result = await serviceProxy.RecognizePhoneNumberAsync(this.Network.NetworkId, this.RecognitionImages);
RecognitionImage recognitionImage = new RecognitionImage
{
Height = (int)ImageHelperRT.ImageHeight,
Width = (int)ImageHelperRT.ImageWidth
};
recognitionImage.TransformFrom2DArrayToImageData(component.ScaledPixels);

this.CreateChartData();
this.RecognitionImages.Add(recognitionImage);
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
}
}

try
{
NumberRecognizerServiceClient serviceProxy = new NumberRecognizerServiceClient();
Result = await serviceProxy.RecognizePhoneNumberAsync(Network.NetworkId, RecognitionImages);

this.IsLoading = false;
this.CreateChartData();
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
}

}

/// <summary>
/// Creates the chart data.
/// </summary>
private void CreateChartData()
{
this.ChartResult = new ObservableCollection<object>();
bool first = false;

ChartResult = new ObservableCollection<object>();

foreach (NumberRecognitionResultItem item in this.Result.Items)
foreach (NumberRecognitionResultItem item in Result.Items)
{
var numberPropabilities = new ObservableCollection<ChartPopulation>();
var posNumberPropabilities = new ObservableCollection<ChartPopulation>();
var negNumberPropabilities = new ObservableCollection<ChartPopulation>();

foreach (KeyValuePair<char, double> pair in item.Probabilities)
{
numberPropabilities.Add(new ChartPopulation()
if (pair.Value < 0)
{
negNumberPropabilities.Add(new ChartPopulation()
{
Name = pair.Key.ToString(),
Value = Math.Abs(pair.Value * 100),
});
}
else
{
Name = pair.Key.ToString(),
Value = pair.Value < 0 ? 0 : pair.Value * 100,
});
posNumberPropabilities.Add(new ChartPopulation()
{
Name = pair.Key.ToString(),
Value = pair.Value * 100
});
}
}

this.ChartResult.Add(new
ChartResult.Add(new
{
Number = item.NumericCharacter.ToString(),
Values = numberPropabilities
Values = posNumberPropabilities,
NegValues = negNumberPropabilities
});
}

this.RaisePropertyChanged(() => this.ChartResult);
RaisePropertyChanged(() => ChartResult);
}

/// <summary>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,14 @@
namespace NumberRecognizer.Cloud.Contract.Data
//-----------------------------------------------------------------------
// <copyright file="ChartPopulation.cs" company="FH Wr.Neustadt">
// Copyright Christoph Hauer. All rights reserved.
// </copyright>
// <author>Christoph Hauer</author>
// <summary>ChartPopulation DataContract.</summary>
//-----------------------------------------------------------------------
namespace NumberRecognizer.Cloud.Contract.Data
{
/// <summary>
///
/// ChartPopulation DataContract
/// </summary>
public class ChartPopulation
{
Expand Down
33 changes: 15 additions & 18 deletions NumberRecognizer/NumberRecognizer.Cloud.Contract/Data/FitnessLog.cs
Original file line number Diff line number Diff line change
@@ -1,14 +1,22 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
//-----------------------------------------------------------------------
// <copyright file="FitnessLog.cs" company="FH Wr.Neustadt">
// Copyright Christoph Hauer. All rights reserved.
// </copyright>
// <author>Christoph Hauer</author>
// <summary>FitnessLog DataContract.</summary>
//-----------------------------------------------------------------------

namespace NumberRecognizer.Cloud.Contract.Data
{
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;

/// <summary>
///
/// FitnessLog Data Contract.
/// </summary>
[DataContract]
public class FitnessLog
Expand All @@ -31,16 +39,5 @@ public FitnessLog()
[DataMember]
public IList<double> FitnessTrend { get; set; }

///// <summary>
///// Gets or sets the pattern trends.
///// The Key of the dictionary represents the pattern (eg. 0-9)
///// The list of double values the generations from 0 - n.
///// </summary>
///// <value>
///// The pattern trends.
///// </value>
//[DataMember]
//public Dictionary<string, List<double>> PatternTrends { get; set; }

}
}
Loading

0 comments on commit 96e94bb

Please sign in to comment.