Skip to content

Instantly share code, notes, and snippets.

@lelandbatey
Last active November 11, 2024 22:46
Show Gist options
  • Save lelandbatey/8677901 to your computer and use it in GitHub Desktop.
Save lelandbatey/8677901 to your computer and use it in GitHub Desktop.
Whiteboard Picture Cleaner - Shell one-liner/script to clean up and beautify photos of whiteboards!

Description

This simple script will take a picture of a whiteboard and use parts of the ImageMagick library with sane defaults to clean it up tremendously.

The script is here:

#!/bin/bash
convert "$1" -morphology Convolve DoG:15,100,0 -negate -normalize -blur 0x1 -channel RBG -level 60%,91%,0.1 "$2"

Results

Here are some of the input images:

And here are the results:

Usage

Assuming it's saved as a file named whiteboardClean.sh, the command is ./whiteboardClean.sh {name of input file} {name of file to output to}.

Here's an example:

./whiteboardClean.sh example1.jpg output1.png

How I Came Up With This

I was doing a lot work with whiteboards and I'd been taking pictures of them to document what had been written. I wanted a more clean version of the pictures though, something that captured the essence of what a whiteboard image showed.

Eventually I found this excellent guide to cleaning up whiteboard photos using GIMP. However, I found I wanted more automation. So, I spent a few hours yesterday figuring out how to do the same thing using ImageMagick from the command line and made this script.

@luisDVA
Copy link

luisDVA commented Jun 2, 2018

has anyone here used this workflow in the 'magick' package in R?
I can't replicate the last bit because I can't figure out how the -level operator was implemented

Copy link

ghost commented Sep 10, 2018

Hello everyone,

Anyone know how to apply this Whiteboard script for swift or objective C Or any other way to use in iOS?

@john-dgi-vof-com
Copy link

oooh wauwie !!! I have been looking for this method for hundreds of years ;-) thanks man!!

@Deliaz
Copy link

Deliaz commented Feb 27, 2019

Hello everyone,

Anyone know how to apply this Whiteboard script for swift or objective C Or any other way to use in iOS?

Let me know please, If you will find anything. Thanks.

@bwjohnson-ss
Copy link

👏

@Napolitain
Copy link

Napolitain commented Sep 25, 2019

I'm getting an error :

convert: ../../magick/quantum.c:216: DestroyQuantumInfo: Assertion `quantum_info != (QuantumInfo *) NULL' failed.
scanner.sh: line 2:     9 Aborted                 (core dumped) convert "$1" -morphology Convolve DoG:15,100,0 -negate -normalize -blur 0x1 -channel RBG -level 60%,91%,0.1 "$2"

I use Ubuntu WSL for Windows 10 and installed the library obviously (ImageMagick). I tried it on a 32000*27000 png image (max format for PNG fyi).

I would also prefer to use it on my initial PDF but it seems it does not work?

@Napolitain
Copy link

Okay, the PNG error is not corrected but I finally found out how to use it on my PDF using this link : https://alexvanderbist.com/posts/2018/fixing-imagick-error-unauthorized

I had a "Unauthorized" error so I nanoed a config file.

@Fresher14
Copy link

I ran this script in a corporate unix environment and it works great. Just rather slow.
Great job, thank you.

@santhalakshminarayana
Copy link

santhalakshminarayana commented Oct 18, 2021

I had converted the above ImageMagick commands to OpenCV Python with some adjustments for white-board image enhancement.
If any one interested for Python implementation, find the script in white_board_enhance github repo.

@the-invisible-man
Copy link

So damn cool!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment