Giter Club home page Giter Club logo

imageprocessingexercises's Introduction

Image Processing Exercises

Repository containing the image processing assignments using BoofCV for the Image processing course of the EIT Digital data science master at UPM.

UPM

Description โ€ข Prerequisites โ€ข Installation โ€ข Exercises 0X โ€ข Segmentation โ€ข Exercises 1X

Description

Exercises for the subject Image processing, analysis and classification of the EIT Digital Data Science Master at UPM (Technical University of Madrid).

Exercises have three parts:

  • Exercises 0X: From exercise 2 to 9.
  • Segmentation exercises.
  • Exercises 1X: Exercise 11 and 13.

Prerequisites

For running the exercises the prerequisites are:

  • Java version 1.8.
  • Maven, if not installed visit install Maven.
  • opencv version 4.3.0, if not installed for java visit this guide (Only needed for exercise segmentation 2b, wheel teeth count)

Installation

For compiling the exercises, and generate the jar file containing all the exercises you have to follow this steps:

mvn package
chmod +x assignment/**/*.sh

If you want to execute Segmentation exercise 2B (Wheel teeth count), you have to set the variable OPENCV_PATH in the script assignment/utils.sh.

Project structure

The project is divided in the following folders:

  • assignment/: Is the folder containing all the responses for the assignments. Is where all the scripts of the exercises and pdfs are located.
  • report/: Is where the source code (.tex) for the reports is located.
  • src/: Folder containing the Java source code of the exercises.
  • test-images/: Images for testing each exercise.

Execute exercises

In this section is explained how to execute each exercise:

NOTE: For executing the exercise is supposed to be located in the parent directory of the project.

Exercises 0X

  • Exercise 2a
assignment/exercises-0x/exercise-2/exercise_02a_thresh.sh exercise_02a_input_01.pgm value exercise_02a_output_01.pgm
  • Exercise 2b
assignment/exercises-0x/exercise-2/exercise_02b_compare.sh exercise_02b_input_01.pgm exercise_02b_input_02.pgm exercise_02b_output.txt
  • Exercise 2c

Check exercise_02c.pdf file.

  • Exercise 2d inf
assignment/exercises-0x/exercise-2/exercise_02d_inf.sh exercise_02d_input_01.pgm exercise_0d_input_02.pgm exercise_02d_output_01.pgm
  • Exercise 2d sup
assignment/exercises-0x/exercise-2/exercise_02d_sup.sh exercise_02d_input_01.pgm exercise_0d_input_02.pgm exercise_02d_output_01.pgm
  • Exercise 3a
assignment/exercises-0x/exercise-3/exercise_03a_erosion.sh i exercise_03a_input_01.pgm exercise_03a_output_01.pgm
  • Exercise 3b
assignment/exercises-0x/exercise-3/exercise_03b_dilation.sh i exercise_03b_input_01.pgm exercise_03b_output_01.pgm
  • Exercise 4a
assignment/exercises-0x/exercise-4/exercise_04a_opening.sh i exercise_04a_input_01.pgm exercise_04a_output_01.pgm
  • Exercise 4b
assignment/exercises-0x/exercise-4/exercise_04b_closing.sh i exercise_04b_input_01.pgm exercise_04b_output_01.pgm
  • Exercise 5a
assignment/exercises-0x/exercise-5/exercise_05a_idempotence_opening.sh i exercise_05a_input_01.pgm
  • Exercise 5b
assignment/exercises-0x/exercise-5/exercise_05b_idempotence_closing.sh i exercise_05b_input_01.pgm
  • Exercise 6a
assignment/exercises-0x/exercise-6/exercise_06a_closing_opening.sh i exercise_06a_input_01.pgm exercise_06a_output_01.pgm
  • Exercise 6b
assignment/exercises-0x/exercise-6/exercise_06b_opening_closing.sh i exercise_06b_input_01.pgm exercise_06b_output_01.pgm
  • Exercise 7a
assignment/exercises-0x/exercise-7/exercise_07a_idempotence_clo_ope.sh i exercise_07a_input_01.pgm
  • Exercise 7b
assignment/exercises-0x/exercise-7/exercise_07b_idempotence_ope_clo.sh i exercise_07b_input_01.pgm
  • Exercise 8
assignment/exercises-0x/exercise-2/exercise_08_filter.sh exercise_08_input_01.pgm
  • Exercise 9

Check exercise_09.pdf file.

Segmentation exercises

Exercise 1a
assignment/segmentation/segmentation_1a.sh operation size input.png output.png

The arguments means:

  • operation: the type of operation could be erosion or dilation.
  • size: size of the structuring element used for operation.
  • input.png: input path for the image used.
  • output.pgm: output path for the image.

As example:

assignment/segmentation/segmentation_1a.sh erosion 1 test-images/segmentation/hitchcock.png out/hitchcock.pgm
Exercise 1b
assignment/segmentation/segmentation_1b.sh connectivity size input.png output.png

The arguments means:

  • connectivity: the type of connectivity could be 4-connectivity or 8-connectivity.
  • size: size of the structuring element used for operation.
  • input.png: input path for the image used.
  • output.pgm: output path for the image.

As example:

assignment/segmentation/segmentation_1b.sh 4 1 test-images/segmentation/particles.png out/particles.pgm
Exercise 2a

This program does not have arguments, the output is the number of counted wheel tooth:

assignment/segmentation/segmentation_2a.sh

Expected output:

Number of teeth > 102

Note: For this exercise the path of the opencv installation should be set in the assignment/utils.sh file.

Exercise 2b

This exercise does not expect any argument:

assignment/segmentation/segmentation_2b.sh

The used image is: test-images/segmentation/coffee_grains.jpg and it will store the generated markers in folder: out/markers.pgm

Exercise 3a

Implementation of the watershed algorithm could be found on location src/main/java/utils/segmentation/fast/FastWaterShed.java

The program could be executed with:

assignment/segmentation/segmentation_3a.sh input.pgm output.png

Where the arguments stand for:

  • input.pgm: input image where regions are going to be extracted from.
  • output.png: output image where regions are going to be stored in different colors.

An example of the execution with small image test-image/segmentation-test.pgm is already in the following script:

assignment/segmentation/segmentation_3a_example.sh

Also the pseudocode report could be found in

assignment/segmentation/segmentation_3a_pseudocode.pdf

Exercises 1X

  • Exercise 11
assignment/exercises-1x/exercise_11a_flatzone.sh exercise_11a_input_01.txt exercise_11a_input_01.pgm exercise_11a_output_01.pgm
  • Exercise 13a
assignment/exercises-1x/exercise_13a_minimum.sh exercise_13a_input_01.txt exercise_11a_input_01.pgm exercise_13a_output_01.txt
  • Exercise 13b
assignment/exercises-1x/exercise_13b_maximum.sh exercise_13b_input_01.txt exercise_13b_input_01.pgm exercise_13b_output_01.txt

Author

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.