Image Processing with Connected Components

Description

This C++ applicaiton reads a greyscale PGM file and extracts the pixels that are above a user provided threshold as white pixels using Bredth first search

How to use

A Makefile is provided just run the following code snippet in the root directory (where the makefile is):

$ make

If everything works fine, you will find the excecutable target file in the build folder

To run the program simply run

$ ./build/findComp {ARGS}

You can run some predifined sample inputs using the following run commands

$ make runAllArguments  

The run command above runs a the program with all aruments provided

Before Processing
Before
After Processing
After
$ make runWriteOnly

The run command above only does the extraction and writes it to an output file without printing component data

$ make runPrintAllComponents

The run command above runs the program and prints out all components data in a sorted fashion

To remove all binary files run

$ make clean

Command line invocation

Assuming your executable is called findcomp, it must support the following command line options:

  • -s <int> <int> (4-s) : Set the minimum and maximum valid component size.

    • [min default = 3, max = image width * image height i.e. unlimited]
  • -t <int> : Set the threshold for component detection.

    • (default = 128, limit to [0 . . . 255])
  • -p : Print out all the component data (entries do not have to be sorted) as well as the total component number and the sizes of the smallest and largest components.

  • -w <outPGMfile> : Write out all retained components (as foreground/background pixels) to a new PGM file, <outPGMfile>.

Note: <inputPGMfile> is a valid PGM image.

Made with ❤️ with good ol' vim