Skip to content

Image Artifact focused version of Image Comparator and Classifier

Notifications You must be signed in to change notification settings

rfrost10/Image-Comparator

Repository files navigation

Image Comparator and Classifier

Purpose: Set up a static webpage and server to host classifier/pairwise comparator tasks for images

I am not the original author of these files. This repository contains aggregated and updated files from previous developers. See acknowledgements below.

Instructions for setup

Once setup you should have two things running:

  • Web Server
  • Couchdb instance

Initial Setup

To finish configuring a single node setup, run the following;

APP_NAME=default
DB_PORT=5984
COUCHDB_USER=admin
COUCHDB_PASSWORD=password

curl -X PUT http://$COUCHDB_USER:[email protected]:$DB_PORT/_users
curl -X PUT http://$COUCHDB_USER:[email protected]:$DB_PORT/_replicator

# Use below if in admin party mode:
# curl -X PUT http://0.0.0.0:$DB_PORT/_users
# curl -X PUT http://0.0.0.0:$DB_PORT/_replicator

To create and setup the database, run the following:

DB_NAME=image_comparator 

curl -X PUT http://$COUCHDB_USER:[email protected]:$DB_PORT/$DB_NAME

# Admin party:
# curl -X PUT http://0.0.0.0:$DB_PORT/$DB_NAME

Add some views to the db:

curl -X PUT http://$COUCHDB_USER:[email protected]:$DB_PORT/$DB_NAME/_design/basic_views -d @flask_server/image_comparator/static/js/basic_views.json

# Admin party:
# curl -X PUT http://0.0.0.0:$DB_PORT/$DB_NAME/_design/basic_views -d @flask_server/image_comparator/utils/basic_views.json

Add Images to DB:

docker exec -it -w $PWD image-comparator-flask-$APP_NAME bash

Place your imaging data in "Image-Comparator-Data".

Ex:

root@a53f9696685a:/home/bb927/Image-Comparator# ls ../Image-Comparator-Data/
MR.1.dcm   MR.2.dcm  MR.3.dcm  MR.4.dcm

If you want to supply the class of the image ahead of time, supply a csv in "Image-Comparator-Data" with image name and id like so:

image,class
MR.1.dcm,class_a
MR.2.dcm,class_b
MR.3.dcm,class_c
MR.4.dcm,class_a
...

Run addImages.py to add images:

python3 image_comparator/utils/addImages.py <path to Image-Comparator-Data> <imageSetName> [<fromCSV>]

Ex:

python3 flask_server/image_comparator/utils/addImages.py Image-Comparator-Data TEST
python3 flask_server/image_comparator/utils/addImages.py Image-Comparator-Data TEST test_classification.csv

python3 flask_server/image_comparator/utils/addImages.py Image-Comparator-Data mimicMIDRCtrain training_classification.csv
python3 flask_server/image_comparator/utils/addImages.py Image-Comparator-Data mimicMIDRCvalidation validation_classification.csv
python3 flask_server/image_comparator/utils/addImages.py Image-Comparator-Data mimicMIDRCtest test_classification.csv
  • <imageFolder> Image-Comparator-Data, but could be user specified.
  • <imageSetName> is the name for the image set.
  • <fromCSV> name of optional csv file in imageFolder

Change flask_server/app/templates/app_template.html to have your users in this section:

<!-- manually add users that you assigned tasks too in makeTasks.rb -->
<select id="username" onchange="{{ app_config.app }}TaskFeeder.OnSetUser(this.value)">
    <option selected="selected">Choose your user</option>
    <option value="Benjamin">Benjamin</option>
</select>

With the app running, image list created and users in the drop down, you can proceed to configuring image lists for use within specific apps below

Apps

You need to have created an image set already with "addImages.py". Go back to the "Add Images to DB" section above.

Image-Comparator

Make Image Compare List:

python3 flask_server/image_comparator/utils/makeCompareList.py <imageSetName> <list name> <pct repeat>
python3 flask_server/image_comparator/utils/makeCompareList.py TEST TESTCompareList
python3 flask_server/image_comparator/utils/makeCompareList.py TEST TESTCompareList 10

Image-Classifier

Make Image Classify List

ruby makeImageClassifyList.rb <imageSet> <listName> <pctRepeat>

Ex:

python3 flask_server/image_comparator/utils/makeClassifyList.py TEST TESTClassifyList
python3 flask_server/image_comparator/utils/makeClassifyList.py TEST TESTClassifyList 10

Grid-Classifier

Make Image Grid List

python3 flask_server/image_comparator/utils/makeGridList.py <imageSet> <listName>
python3 flask_server/image_comparator/utils/makeGridList.py TEST TESTGridList

Pair-Classifier

Make Pair Classifier List

python3 flask_server/image_comparator/utils/makePairList.py <imageSet> <listName>
python3 flask_server/image_comparator/utils/makePairList.py TEST TESTPairList

Add a task to a user for one of the Apps:

python3 flask_server/image_comparator/utils/makeTask.py <user> <image-list-name> <image-list-type> <task-order> [<description>]
python3 flask_server/image_comparator/utils/makeTask.py Benjamin TESTCompareList compare 1
python3 flask_server/image_comparator/utils/makeTask.py Benjamin TESTCompareList compare 1 test_description
python3 flask_server/image_comparator/utils/makeTask.py Benjamin TESTClassifyList classify 1
python3 flask_server/image_comparator/utils/makeTask.py Benjamin TESTClassifyList classify 1 test_description
python3 flask_server/image_comparator/utils/makeTask.py Benjamin TESTGridList grid 1
python3 flask_server/image_comparator/utils/makeTask.py Benjamin TESTGridList grid 1 test_description
python3 flask_server/image_comparator/utils/makeTask.py Benjamin TESTPairList pair 1
python3 flask_server/image_comparator/utils/makeTask.py Benjamin TESTPairList pair 1 test_description

Acknowledgements

In the order they appear this project has been forked and added to. Yet again we fork to make a QTIM-Lab based project that will be adapted and maintained here.

  1. Jayashree Kalpathy-Cramer, PhD for original source code (https://github.com/AlanCramer/Image-Comparator)
  2. Collin Wen (https://github.com/CollinWen/Image-Comparator.git)
  3. Collin Wen (https://github.com/CollinWen/Image-Comparator-Dockerfile)
  4. Jimmy chen (https://github.com/jche253/Fundus_Classifier_Comparator)

Contact

For questions, please contact:

About

Image Artifact focused version of Image Comparator and Classifier

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •