GithubHelp home page GithubHelp logo

marcelgoldstein / imagechecker Goto Github PK

View Code? Open in Web Editor NEW
6.0 2.0 1.0 648 KB

Image comparison with OpenCvSharp

License: GNU General Public License v3.0

C# 100.00%
csharp wpf windows opencv opencvsharp dotnetcore bmp gif image-processing jfif

imagechecker's People

Contributors

marcelgoldstein avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

schifflee

imagechecker's Issues

ResultView: Images not displayed on open

When in the ResultView the very first item is selected an the files get deleted, then ResultView closed and reopened the first item is automatically selected but the images are not displayed.
Expected behavior would be that the backup file are used to display the deleted images. This work when the selectedItem is changed manually but not when autoselected on opening of the ResultView.

Allocated RAM released later than expected

Desired behavior:
The allocated RAM from the ResultView is free when the view got closed.

Current behavior:
The allocated RAM from a closed ResultView gets free when a new ResultView-Instance is opened. Observable in VS and TaskManager.

CPU Usage

On my CPU

12th Gen Intel(R) Core(TM) i7-12700K

Basisgeschwindigkeit: 3,60 GHz
Sockets: 1
Kerne: 12
Logische Prozessoren: 20

the utilization is not quite on spot.
grafik

The concurrent running thead count is determined by the count of the logical processors -1. Maybe this needs a rework.

demo/example run

add an option to run showcase the image comparing capabilities by running a demo mode which

  1. copies some sample images to a folder in the users temp folder
  2. add the folder path to the "folders"-selection
  3. start the compare run
  4. opens the results view
  5. activating the "extermination mode" and deleting the smaller image of an duplicate
  6. closing the results view
  7. finish the demo run by clearing all results, folder selections und deleting the folder in the users temp folder

All these steps should be done automatically and/or by guiding the user to take the input/clicks by highlithing the buttons or dimming all other UI. Step by step guiding through and giving descriptions of what is happening while it is happening.

create/find a framework for dimming the UI and highlighting a specific area

This could be achived by using semi-transparent border on an adornerlayer over the whole window.
This should be made working on all WPF Views (UserControl class) and target elements (frameworkelement or uielement) to highlight.
There should be animations to get from one state to another:
a) "off => on" by slowly dimming
b) "moving the highlight area" by moving it slowly and using a animation that moves slower at the start and end but faster in the middle.
c) "on => off" by slowly removing the dim effect

improve comparison of .gif files

Right now only the first frame of a .gif file is compared to the first frame of other .gif files.

The result would be better, if more frame could be compared. For example taking a frame each 200ms.

Error when loading images

Sometimes when loading the images for display in the resultview a image is not loaded. This only seems to occour when scrolling very fast - so possibly a problem with parallelity and/or cancellation (cancellationtoken).

Analyze approche:

  1. debug and watch the output window for exceptions
  2. watch for bugs in the cancellation logic. setting/resetting states.

comparing animated image files

.webp can have animated frame as well as .gif.
Currently .gif files are compared only against other .gif files. This is no longer the right way to compare only against other animated files.

list all found but unsupported files

When reading the files in the given directories all unsupported files types (file-extensions) should be collected and presented.
The presenting view could have grouping/filtering capabilities and an option to change the extension or delete files.

Async Command

Refactor "RelayCommand.cs" to support async func as delegate. Func and Action should both be supported.
Then refactor all async methods currently using "async void" to properly use "async Task/ValueTask".

clear current results

the current results need to be cleared out on "start" or when "folders" getting selected.

Common enhancement for handling deleted files

  • 1. When an image gets deleted store a copy of the file on harddisk (temp folder)
  • 2. Store the path to the backup on the ResultImage instance.
  • 3. When the ResultView wants to display the image and the original is deleted, use the backup.
  • 4. Same for "restore" or "save as" operations. Just use the backup file if available.
  • 5. Change "save as" operation to copy the original/backup file instead of saving the runtime image data to a file.
  • 6. OnApplicationExit or "discard results" clear the backups from harddisk.

This should solve #6 and #5.

Theming in optional dark-mode

Add a option the change the theming between "light" and "dark".
The default option should read from the OS like many other apps do.

compare video files

calculate multiple factors:

  • resolution
  • aspect ratio
  • duration
  • filesize
  • format

Weight in these factors as a base for the result and to determine if a deep analysis is reasonable.

The deep analysis could take bitmaps of the videos once per second (these sample rate should be configurable by the user) and compare these to the bitmaps of the other video. Out of all these single bitmap compares take the average.

Limit the execution of a deep analysis to files with a given maximum duration. These Limit should be configurable by the user.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.