コード例 #1
0
ファイル: Class1.cs プロジェクト: gowland/MosaicMaker2
 public Class1(IImageLoader loader)
 {
     _loader         = loader;
     _statsGenerator = new StatsGenerator(loader);
     _matchFinder    = new Lazy <MatchFinder>(() => new MatchFinder(new Alphabet(_statsGenerator.ImagesAndStats)));
 }
コード例 #2
0
ファイル: MatchFinder.cs プロジェクト: gowland/MosaicMaker2
 public BitmapAndSegments[] RefineMatches(AdvancedStats origStats, ImageSegments[] basicMatches, IImageLoader loader, StatsGenerator statsGenerator)
 {
     return(basicMatches.Select(m => new
     {
         Image = m.Image,
         Bitmap = loader.LoadImage(m.Image.ImagePath),
         ManipulationInfos = m.ManipulationInfos
     })
            .SelectMany(m => m.ManipulationInfos.Select(r => new
     {
         ImagePath = m.Image,
         Image = m.Bitmap,
         Stats = statsGenerator.GetAdvancedStats(m.Bitmap, r.Rectangle),
         ManipulationInfo = r,
     }))
            .OrderBy(m =>
                     m.Stats.MidResR.Difference(origStats.MidResR)
                     + 1.1 * m.Stats.MidResG.Difference(origStats.MidResG)
                     + m.Stats.MidResB.Difference(origStats.MidResB)
                     + 1.5 * m.Stats.MidResIntensity.Difference(origStats.MidResIntensity)
                     )
            // .Take(10)
            .Take(1)
            .GroupBy(m => m.ImagePath.ImagePath)
            .Select(group => new BitmapAndSegments(group.First().Image, group.Select(i => i.ManipulationInfo)))
            .ToArray());
 }