FocusModel

This commit is contained in:
2023-02-26 18:17:20 -07:00
parent 0f025b5e2e
commit 70c9ee5781
24 changed files with 286 additions and 176 deletions

View File

@ -10,18 +10,16 @@ public class MappingFromItem : Properties.IMappingFromItem
public int Id { init; get; }
public FileHolder ImageFileHolder { init; get; }
public bool? IsWrongYear { init; get; }
public bool IsIgnoreRelativePath { init; get; }
public DateTime MinimumDateTime { init; get; }
public string RelativePath { init; get; }
public FileHolder ResizedFileHolder { init; get; }
[JsonConstructor]
public MappingFromItem(DateTime[] containerDateTimes, int id, FileHolder imageFileHolder, bool isIgnoreRelativePath, bool? isWrongYear, DateTime minimumDateTime, string relativePath, FileHolder resizedFileHolder)
public MappingFromItem(DateTime[] containerDateTimes, int id, FileHolder imageFileHolder, bool? isWrongYear, DateTime minimumDateTime, string relativePath, FileHolder resizedFileHolder)
{
ContainerDateTimes = containerDateTimes;
Id = id;
ImageFileHolder = imageFileHolder;
IsIgnoreRelativePath = isIgnoreRelativePath;
IsWrongYear = isWrongYear;
MinimumDateTime = minimumDateTime;
RelativePath = relativePath;
@ -34,7 +32,7 @@ public class MappingFromItem : Properties.IMappingFromItem
return result;
}
internal static MappingFromItem GetMappingFromItem(DateTime[] containerDateTimes, Item item, FileHolder? resizedFileHolder, bool isIgnoreRelativePath)
internal static MappingFromItem GetMappingFromItem(DateTime[] containerDateTimes, Item item, FileHolder? resizedFileHolder)
{
MappingFromItem result;
bool? isWrongYear;
@ -45,7 +43,7 @@ public class MappingFromItem : Properties.IMappingFromItem
throw new NotSupportedException();
minimumDateTime = Stateless.Methods.IProperty.GetMinimumDateTime(item.Property);
(isWrongYear, _) = item.Property.IsWrongYear(item.ImageFileHolder, minimumDateTime);
result = new(containerDateTimes, item.Property.Id.Value, item.ImageFileHolder, isIgnoreRelativePath, isWrongYear, minimumDateTime, item.RelativePath, resizedFileHolder);
result = new(containerDateTimes, item.Property.Id.Value, item.ImageFileHolder, isWrongYear, minimumDateTime, item.RelativePath, resizedFileHolder);
return result;
}
@ -54,15 +52,15 @@ public class MappingFromItem : Properties.IMappingFromItem
public class MappingFromLocation : Properties.IMappingFromLocation
{
public int AreaPermille { init; get; }
public int AreaPermyriad { init; get; }
public int ConfidencePercent { init; get; }
public string DeterministicHashCodeKey { init; get; }
public int NormalizedRectangle { init; get; }
[JsonConstructor]
public MappingFromLocation(int areaPermille, int confidencePercent, string deterministicHashCodeKey, int normalizedRectangle)
public MappingFromLocation(int areaPermyriad, int confidencePercent, string deterministicHashCodeKey, int normalizedRectangle)
{
AreaPermille = areaPermille;
AreaPermyriad = areaPermyriad;
ConfidencePercent = confidencePercent;
DeterministicHashCodeKey = deterministicHashCodeKey;
NormalizedRectangle = normalizedRectangle;
@ -76,6 +74,29 @@ public class MappingFromLocation : Properties.IMappingFromLocation
}
public class MappingFromFilter : Properties.IMappingFromFilter
{
public bool? IsFocusModel { init; get; }
public bool? IsFocusRelativePath { init; get; }
public bool? IsIgnoreRelativePath { init; get; }
[JsonConstructor]
public MappingFromFilter(bool? isFocusModel, bool? isFocusRelativePath, bool? isIgnoreRelativePath)
{
IsFocusModel = isFocusModel;
IsFocusRelativePath = isFocusRelativePath;
IsIgnoreRelativePath = isIgnoreRelativePath;
}
public override string ToString()
{
string result = JsonSerializer.Serialize(this, new JsonSerializerOptions() { WriteIndented = true });
return result;
}
}
public class MappingFromPhotoPrism : Properties.IMappingFromPhotoPrism
{
@ -125,6 +146,7 @@ public class Mapping : Properties.IMapping
protected SortingContainer? _SortingContainer;
public int? By => _By;
public MappingFromItem MappingFromItem { init; get; }
public MappingFromFilter MappingFromFilter { init; get; }
public MappingFromLocation? MappingFromLocation { init; get; }
public List<MappingFromPhotoPrism>? MappingFromPhotoPrismCollection { init; get; }
public MappingFromPerson? MappingFromPerson => _MappingFromPerson;
@ -132,19 +154,20 @@ public class Mapping : Properties.IMapping
public SortingContainer? SortingContainer => _SortingContainer;
[JsonConstructor]
public Mapping(int? by, MappingFromItem mappingFromItem, MappingFromLocation? mappingFromLocation, List<MappingFromPhotoPrism>? mappingFromPhotoPrismCollection, MappingFromPerson? mappingFromPerson, string? segmentC, SortingContainer? sortingContainer)
public Mapping(int? by, MappingFromItem mappingFromItem, MappingFromFilter mappingFromFilter, MappingFromLocation? mappingFromLocation, List<MappingFromPhotoPrism>? mappingFromPhotoPrismCollection, MappingFromPerson? mappingFromPerson, string? segmentC, SortingContainer? sortingContainer)
{
_By = by;
_SegmentC = segmentC;
MappingFromItem = mappingFromItem;
MappingFromFilter = mappingFromFilter;
MappingFromLocation = mappingFromLocation;
MappingFromPhotoPrismCollection = mappingFromPhotoPrismCollection;
_MappingFromPerson = mappingFromPerson;
_SortingContainer = sortingContainer;
}
public Mapping(MappingFromItem mappingFromItem, MappingFromLocation? mappingFromLocation, List<MappingFromPhotoPrism>? mappingFromPhotoPrismCollection) :
this(null, mappingFromItem, mappingFromLocation, mappingFromPhotoPrismCollection, null, null, null)
public Mapping(MappingFromItem mappingFromItem, MappingFromFilter mappingFromFilter, MappingFromLocation? mappingFromLocation, List<MappingFromPhotoPrism>? mappingFromPhotoPrismCollection) :
this(null, mappingFromItem, mappingFromFilter, mappingFromLocation, mappingFromPhotoPrismCollection, null, null, null)
{ }
public override string ToString()

View File

@ -3,7 +3,7 @@ namespace View_by_Distance.Shared.Models.Methods;
public interface IDistanceLimits
{
public double FaceAreaPermille { init; get; }
public double FaceAreaPermyriad { init; get; }
public double RangeDaysDeltaTolerance { init; get; }
public double FaceConfidencePercent { init; get; }
public double FaceDistancePermyriad { init; get; }

View File

@ -6,7 +6,6 @@ public interface IMappingFromItem
public DateTime[] ContainerDateTimes { init; get; }
public int Id { init; get; }
public FileHolder ImageFileHolder { init; get; }
public bool IsIgnoreRelativePath { init; get; }
public bool? IsWrongYear { init; get; }
public DateTime MinimumDateTime { init; get; }
public string RelativePath { init; get; }
@ -14,10 +13,19 @@ public interface IMappingFromItem
}
public interface IMappingFromFilter
{
public bool? IsFocusModel { init; get; }
public bool? IsFocusRelativePath { init; get; }
public bool? IsIgnoreRelativePath { init; get; }
}
public interface IMappingFromLocation
{
public int AreaPermille { init; get; }
public int AreaPermyriad { init; get; }
public int ConfidencePercent { init; get; }
public string DeterministicHashCodeKey { init; get; }
public int NormalizedRectangle { init; get; }

View File

@ -50,9 +50,9 @@ public interface ILocation
static string GetLeftPadded(int locationDigits, string value) =>
Location.GetLeftPadded(locationDigits, value);
int TestStatic_GetConfidencePercent(int faceConfidencePercent, double[] rangeFaceConfidence, double confidence) =>
int TestStatic_GetConfidencePercent(int faceConfidencePercent, float[] rangeFaceConfidence, double confidence) =>
GetConfidencePercent(faceConfidencePercent, rangeFaceConfidence, confidence);
static int GetConfidencePercent(int faceConfidencePercent, double[] rangeFaceConfidence, double confidence) =>
static int GetConfidencePercent(int faceConfidencePercent, float[] rangeFaceConfidence, double confidence) =>
Location.GetConfidencePercent(faceConfidencePercent, rangeFaceConfidence, confidence);
string TestStatic_GetLeftPadded(int locationDigits, int value) =>

View File

@ -8,20 +8,20 @@ public interface IMapping
static (string?, string?, string?, bool?) GetSegments(string facesFileNameExtension, string fileName)
=> Mapping.GetSegments(facesFileNameExtension, fileName);
int TestStatic_GetAreaPermille(int faceAreaPermille, int height, Models.Location location, int width)
=> GetAreaPermille(faceAreaPermille, height, location, width);
static int GetAreaPermille(int faceAreaPermille, int height, Models.Location location, int width)
=> Mapping.GetAreaPermille(faceAreaPermille, location.Bottom, height, location.Left, location.Right, location.Top, width);
int TestStatic_GetAreaPermyriad(int faceAreaPermyriad, int height, Models.Location location, int width)
=> GetAreaPermyriad(faceAreaPermyriad, height, location, width);
static int GetAreaPermyriad(int faceAreaPermyriad, int height, Models.Location location, int width)
=> Mapping.GetAreaPermyriad(faceAreaPermyriad, location.Bottom, height, location.Left, location.Right, location.Top, width);
int TestStatic_GetAreaPermille(int faceAreaPermille, int bottom, int height, int left, int right, int top, int width)
=> GetAreaPermille(faceAreaPermille, bottom, height, left, right, top, width);
static int GetAreaPermille(int faceAreaPermille, int bottom, int height, int left, int right, int top, int width)
=> Mapping.GetAreaPermille(faceAreaPermille, bottom, height, left, right, top, width);
int TestStatic_GetAreaPermyriad(int faceAreaPermyriad, int bottom, int height, int left, int right, int top, int width)
=> GetAreaPermyriad(faceAreaPermyriad, bottom, height, left, right, top, width);
static int GetAreaPermyriad(int faceAreaPermyriad, int bottom, int height, int left, int right, int top, int width)
=> Mapping.GetAreaPermyriad(faceAreaPermyriad, bottom, height, left, right, top, width);
int TestStatic_GetAreaPermille(int faceAreaPermille, Models.Location location, Models.OutputResolution outputResolution)
=> GetAreaPermille(faceAreaPermille, location, outputResolution);
static int GetAreaPermille(int faceAreaPermille, Models.Location location, Models.OutputResolution outputResolution)
=> Mapping.GetAreaPermille(faceAreaPermille, location.Bottom, outputResolution.Height, location.Left, location.Right, location.Top, outputResolution.Width);
int TestStatic_GetAreaPermyriad(int faceAreaPermyriad, Models.Location location, Models.OutputResolution outputResolution)
=> GetAreaPermyriad(faceAreaPermyriad, location, outputResolution);
static int GetAreaPermyriad(int faceAreaPermyriad, Models.Location location, Models.OutputResolution outputResolution)
=> Mapping.GetAreaPermyriad(faceAreaPermyriad, location.Bottom, outputResolution.Height, location.Left, location.Right, location.Top, outputResolution.Width);
string TestStatic_GetDeterministicHashCodeKey(int id, Models.Location location, int locationDigits, Models.OutputResolution outputResolution)
=> GetDeterministicHashCodeKey(id, location, locationDigits, outputResolution);

View File

@ -3,19 +3,19 @@ namespace View_by_Distance.Shared.Models.Stateless.Methods;
public interface IMappingFromItem
{ // ...
MappingFromItem TestStatic_GetMappingFromItem(DateTime[] containerDateTimes, Models.Item item, Models.FileHolder? resizedFileHolder, bool isIgnoreRelativePath)
=> GetMappingFromItem(containerDateTimes, item, resizedFileHolder, isIgnoreRelativePath);
static MappingFromItem GetMappingFromItem(DateTime[] containerDateTimes, Models.Item item, Models.FileHolder? resizedFileHolder, bool isIgnoreRelativePath)
=> MappingFromItem.GetMappingFromItem(containerDateTimes, item, resizedFileHolder, isIgnoreRelativePath);
MappingFromItem TestStatic_GetMappingFromItem(DateTime[] containerDateTimes, Models.Item item, Models.FileHolder? resizedFileHolder)
=> GetMappingFromItem(containerDateTimes, item, resizedFileHolder);
static MappingFromItem GetMappingFromItem(DateTime[] containerDateTimes, Models.Item item, Models.FileHolder? resizedFileHolder)
=> MappingFromItem.GetMappingFromItem(containerDateTimes, item, resizedFileHolder);
MappingFromItem TestStatic_GetMappingFromItem(DateTime[] containerDateTimes, Models.Item item, bool isIgnoreRelativePath)
=> GetMappingFromItem(containerDateTimes, item, isIgnoreRelativePath);
static MappingFromItem GetMappingFromItem(DateTime[] containerDateTimes, Models.Item item, bool isIgnoreRelativePath)
=> GetMappingFromItem(containerDateTimes, item, item.ResizedFileHolder, isIgnoreRelativePath);
MappingFromItem TestStatic_GetMappingFromItem(DateTime[] containerDateTimes, Models.Item item)
=> GetMappingFromItem(containerDateTimes, item);
static MappingFromItem GetMappingFromItem(DateTime[] containerDateTimes, Models.Item item)
=> GetMappingFromItem(containerDateTimes, item, item.ResizedFileHolder);
MappingFromItem TestStatic_GetMappingFromItem(Models.Item item, bool isIgnoreRelativePath)
=> GetMappingFromItem(item, isIgnoreRelativePath);
static MappingFromItem GetMappingFromItem(Models.Item item, bool isIgnoreRelativePath)
=> GetMappingFromItem(containerDateTimes: Array.Empty<DateTime>(), item, item.ResizedFileHolder, isIgnoreRelativePath);
MappingFromItem TestStatic_GetMappingFromItem(Models.Item item)
=> GetMappingFromItem(item);
static MappingFromItem GetMappingFromItem(Models.Item item)
=> GetMappingFromItem(containerDateTimes: Array.Empty<DateTime>(), item, item.ResizedFileHolder);
}

View File

@ -132,7 +132,7 @@ internal abstract class Location
return new(x, y);
}
internal static int GetConfidencePercent(int faceConfidencePercent, double[] rangeFaceConfidence, double confidence)
internal static int GetConfidencePercent(int faceConfidencePercent, float[] rangeFaceConfidence, double confidence)
{
int result = (int)(confidence / rangeFaceConfidence[1] * faceConfidencePercent);
return result;

View File

@ -65,12 +65,12 @@ internal abstract class Mapping
return new(id, normalizedRectangle);
}
internal static int GetAreaPermille(int faceAreaPermille, int bottom, int height, int left, int right, int top, int width)
internal static int GetAreaPermyriad(int faceAreaPermyriad, int bottom, int height, int left, int right, int top, int width)
{
int result;
double area = width * height;
double locationArea = (right - left) * (bottom - top);
result = (int)Math.Round(locationArea / area * faceAreaPermille, 0);
result = (int)Math.Round(locationArea / area * faceAreaPermyriad, 0);
return result;
}