Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
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.

@projectdevan
Copy link

projectdevan commented Jan 17, 2015

Checkout this new service http://www.brightboard.co.in/ . It is pretty basic and non secure now and is in devel mode. Started it as a new service. Help to make it better by giving your suggestions

@mburr
Copy link

mburr commented Aug 10, 2015

Thank you so much for posting the one liner - my own little bit of monkeying around didn't work well. This does a great job!

@peterjamesbaldwin-myob
Copy link

peterjamesbaldwin-myob commented Jun 9, 2016

Great work.

@amn41
Copy link

amn41 commented Sep 14, 2016

@lelandbatey any tips on fixing the way the text looks here? http://imgur.com/a/dWddi I thought it was maybe bc I fed it a jpg but I converted to png & still get blurry / hard-to-read text

@mickdee
Copy link

mickdee commented Nov 29, 2016

When trying to run the same command in the readme on Mac Sierra I get the following error (I have a test image in the same directory from which I'm running the command):

convert: unable to load module `/usr/local/Cellar/imagemagick/6.8.9-1/lib/ImageMagick//modules-Q16/coders/jpeg.la': file not found @ error/module.c/OpenModule/1282.
convert: no decode delegate for this image format `JPEG' @ error/constitute.c/ReadImage/501.
convert: no images defined `imageclean.png' @ error/convert.c/ConvertImageCommand/3187.

@bruceathome
Copy link

bruceathome commented Oct 17, 2017

Hi. Blatant ask for assistance - is there any way to get a similar script to run in python (actually pythonista on an ipad)? My students (high school) send me photographs of their responses to questions. I then save these on my iPad and use a script? in the 'workflow' app which rotates the images (if necessary) and converts them to pdf, which I then open in another app (notability) so that I can annotate and then email them back to the students. I would like to use the above script as part of my workflow script to automate everything. My thoughts are to use pythonista (which 'workflow' can talk to) to run something similar to the script above to clean up the students photographs. Sorry for the long-winded ask for help (non-programmer here).

@henrebotha
Copy link

henrebotha commented May 22, 2018

@bruceathome did you manage? I can try and help you. Drop me an email (address here https://github.com/henrebotha).

@Bersaelor
Copy link

Bersaelor commented May 24, 2018

Next step:
Replicate same line with CIFilters and put it in an app, so you don‘t have to export them to PC first.

@yekm
Copy link

yekm commented May 24, 2018

@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

@moontecholabs
Copy link

moontecholabs 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

john-dgi-vof-com commented Jan 24, 2019

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

bwjohnson-ss commented Aug 8, 2019

👏

@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

Napolitain commented Sep 25, 2019

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

Fresher14 commented Jan 13, 2021

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.

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