
Show HN: Image Processing for Everybody - loomi
http://imageplay.io/
======
leni536
This reminds me of the mathmap GIMP plugin [1]. I played around with it a long
time ago.

[1]
[http://www.complang.tuwien.ac.at/schani/mathmap/](http://www.complang.tuwien.ac.at/schani/mathmap/)

~~~
loomi
Wow, this looks nice. You can search for hours on yourself and than HN tells
you in minutes what is all around. Amazing!

Yes I think ImagePlay is quite comparable. I have too look into the details to
see where it differs. I imagine you can also really simple add new own plug-
ins?

~~~
leni536
> I imagine you can also really simple add new own plug-ins?

You could write your own filters in its custom language and save them, of
course you could easily download existing filters from others and save them
too. I don't remember if you could save composed filters, last time I used it
was in 2007 and I was still in high school. I found my abandoned flickr
profile, I really liked writing geometry filters [1]. The two spheres and the
two spiral patterns were made using mathmap. Right now I can't find an easily
installable version for Linux though. As far as I remember it could compile
its filters to c then binary if gcc was available.

One other interesting property of mathmap: It didn't cache intermediate
results between filters and handled images as if they were infinite and had
infinite resolution. It works, because if you only care about one given pixel
of the resulting image you can calculate the previous image pixels lazily. It
allowed really convenient compositions, like composing a Mandelbrot-set
generator and a zoom filter then zooming into the set indefinitely only
adjusting the zoom filter.

I didn't try ImagePlay yet. Can you write your own filters in it or you can
"only" compose from the existing filters? Writing your own filters was a
killer feature of mathmap for me, especially for custom geometry filters.

[1]
[https://www.flickr.com/photos/10529466@N02/](https://www.flickr.com/photos/10529466@N02/)

~~~
smk2
We provide a C++ API:
[https://github.com/cpvrlab/ImagePlay/wiki/Plugins:-01-Tutori...](https://github.com/cpvrlab/ImagePlay/wiki/Plugins:-01-Tutorial-\(Windows\))

You basically get access to pixel values and can then do whatever you want.
Might not be comparable to what mathmap does though.

~~~
leni536
Yeah, this is more than enough, I'm definitely going to build this.

~~~
loomi
A question, would you personally prefer to host this Plug-In once written:

\- on your own GitHub account?

\- a ImagePlay Plug-In Repo?

\- or integrated directly in the main Build?

~~~
leni536
Well, I guess I would prefer GitHub and license it GPL3, then you can use it
any way you want. It would be flattering if it was integrated into the main
build.

~~~
loomi
Okay, looking forward for a main build contribution!

------
dominotw
>It comes with a variety of over 70 so called processes

Minor nitpick, that reads like you are mocking your own product.

~~~
loomi
Thanks for this hint from non-nativ speakers.. Better alternative?

~~~
travjones
"ImagePlay comes with 70 built-in processes." And then you could provide a one
sentence description of what processes do.

~~~
stinos
I'd call that 'processors'. Something like 'load image' could be called
'source' and 'save image' a 'sink'. Of course I'm biased since I have been
using such naming schemes for years in signal processing software

~~~
pbhjpbhj
"Tools" or "functions" probably work and fit in well with descriptions of
processing in graphics packages; "processes" seems fine to me (like the suite
from [http://processing.org](http://processing.org) ).

~~~
randcraw
Yes. Functions or methods or procedures is preferable to processes.
"Processes" implies threads or independently executing activities, like
multiprocessing.

------
iamflimflam1
Reminds me of Khoros[1] and Cantata[2] that I used back in the early 90's.
Sadly neither seem to exist anymore.

[1]
[http://www.hpl.hp.com/techreports/92/HPL-92-96.pdf](http://www.hpl.hp.com/techreports/92/HPL-92-96.pdf)

[2]
[http://www.cs.ioc.ee/~khoros2/k2tools/cantata/cantata.html](http://www.cs.ioc.ee/~khoros2/k2tools/cantata/cantata.html)
and [http://www.cs.ioc.ee/~khoros2/k2tools/cantata/basics-
cantata...](http://www.cs.ioc.ee/~khoros2/k2tools/cantata/basics-cantata.html)

~~~
loomi
Nice! Thanks for these references. We, the current developers, did not know
about these papers. Actually the idea of Imageplay was created by a professor
now in retreat.

I definitely need to ask him if he know about these.

~~~
droelf
A recent, similar, node-based image editor based off of GEGL is
[http://www.jonnor.com/2015/01/imgflo-0-3/](http://www.jonnor.com/2015/01/imgflo-0-3/)

~~~
loomi
That is cool, fully web based. Thanks.

------
madmax108
This is cool.... Would be nice to be able to use more processing algorithms
such as SIFT[1]. Or would the SIFT patent get in the way of this?

[1] [https://en.wikipedia.org/wiki/Scale-
invariant_feature_transf...](https://en.wikipedia.org/wiki/Scale-
invariant_feature_transform)

~~~
loomi
This is totally feasible, ImagePlay allows to add your own Plug-Ins. Like this
you can also add algorithms which are patented (which I don't know if and how
and where SIFT is.)

[https://github.com/cpvrlab/ImagePlay/wiki/Plugins:-01-Tutori...](https://github.com/cpvrlab/ImagePlay/wiki/Plugins:-01-Tutorial-\(Windows\))

~~~
madmax108
Nice. Definitely looking forward to checking this out :)

SIFT is patented[1] and not free for commercial use. This puts people who want
to use the amazing alternative to play around finding alternatives, which are
usually either half-baked functionally or simply not as good.[2]

[1]
[https://www.google.com/patents/US6711293](https://www.google.com/patents/US6711293)
[2] [http://dsp.stackexchange.com/questions/1288/what-are-some-
fr...](http://dsp.stackexchange.com/questions/1288/what-are-some-free-
alternatives-to-sift-surf-that-can-be-used-in-commercial-app)

~~~
thfuran
Aren't SURF and ilk free and pretty performant?

------
loomi
ImagePlay is a rapid prototyping tool for building and testing image
processing algorithms. It comes with a variety of over 70 so called processes
which can be combined into complex process chains. ImagePlay is completely
open source and can be built for Windows, Mac and Linux.

------
billyhoffman
Wow! The screen shots on the site revealed something pretty cool. The exact
center of the 512 x 512 Lena test image is the middle of her right eye's
pupil.

~~~
slxh
I believe that is a rule that many photographers sometime use (placing the
dominant eye in the center of the photo) [1].

1: [http://petapixel.com/2015/03/16/9-photo-composition-tips-
as-...](http://petapixel.com/2015/03/16/9-photo-composition-tips-as-seen-in-
photographs-by-steve-mccurry/)

------
legutierr
Very cool. I would love to be able to programmatically interact with this
through python bindings, though, rather than the GUI.

~~~
loomi
Yes this might be a future option to open the Plug-Ins to other programming
languages.

You might also look into the from rer0tsaz proposed
([https://news.ycombinator.com/item?id=10009228](https://news.ycombinator.com/item?id=10009228))
G'MIC. Not sure if there are Python bindings though.

Further is there already tons of good Python Image Processing libraries
around, mostly build around PIL.

------
AsakiIssa
Pretty cool for an open source project. Reminders me very much of Filterforge
([http://filterforge.com/](http://filterforge.com/)) just missing the
photoshop filter part.

~~~
loomi
Looks nice! Though ImagePlay does have a quite different public I guess. It
was build mainly for education and prototyping.

------
ashmud
Based on previous discussions on HN, you may receive criticism for the use of
the Lenna image.

A couple example threads:

[https://news.ycombinator.com/item?id=8253676](https://news.ycombinator.com/item?id=8253676)

[https://news.ycombinator.com/item?id=8704629](https://news.ycombinator.com/item?id=8704629)

~~~
loomi
Oh, it is just the picture which makes everybody think "Image Processing". We
see it as part of cultural heritage of the field.

I guess over here in Europe we don't see this stuff as serious as you guys.
But I might learn otherwise. Thanks for the heads up anyway!

------
methyl
Cool stuff!

If I can give some feedback about website, scroll is behaving in a weird way.
It's not a good idea to alter this behaviour, it should be what user wants and
is used to, no what author thinks is good :)

~~~
loomi
Finally we are C++ developers not Webwizards. (-,

But we love to have pull request for the website.
[https://github.com/cpvrlab/ImagePlay/tree/gh-
pages](https://github.com/cpvrlab/ImagePlay/tree/gh-pages)

Thanks!

~~~
WasimBhai
Would you be open to Wavelet Transform implementation for images? Features
does not have that and I think I will love to do it. I guess it will come
handy for someone trying to fiddle with BM3D image denoising.

~~~
smk2
We currently allow to convert images to Fourier space using FFT. We might add
wavelets later on, thanks for the feedback.

------
Gravityloss
(EDIT: nevermind, bug was already reported:
[https://github.com/cpvrlab/ImagePlay/issues/51](https://github.com/cpvrlab/ImagePlay/issues/51)
)

~~~
loomi
Straight to issues please if you have a GitHub account:
[https://github.com/cpvrlab/ImagePlay/issues](https://github.com/cpvrlab/ImagePlay/issues)

A simple description how the crash happened is gold worth by the way!

------
JupiterMoon
What is this using to do the actual processing? (i.e. is this using OpenCV
behind the scenes or ITK or it's own code)?

Can this handle:

1\. int16 and float data

2\. 3D datasets

~~~
smk2
The algorithms are either our own or OpenCV. Images are currently converted to
8-bit when loaded. But all processing is done internally as float. We plan to
support int16 and float images soon.

------
leni536
What colorspace does it use? I suspect it is sRGB. Can a user change it? There
could be filters that makes more sense in a linear colorspace. Anyway any sane
colorspace handling would be awesome.

~~~
smk2
When loaded, images are converted to sRGB. Internally, all algorithms use
float values so we might add additional color spaces and color depths.

------
fgtx
Great project! Would be nice to have something like an "export as code"
feature.

~~~
loomi
Oh, we were waiting for this one: Sure that is what we got quite often as
feedback! And it is somewhat planned.

Though it is not straight forward to create performant code at the end. But we
might investigate to export a list of snippets in a first step.

~~~
fgtx
I think the 'performant code' is not so much as a must have for those - like
me - that are more interested in the logic rather than the code itself.

Also, IMHO a high level abstraction would be preferred when porting/coding
said logic to another programming language.

------
minthd
Is there some similar (but a higher level) tool for computer vision ? one that
you don't need much computer vision knowledge to build useful things ?

~~~
loomi
Before leni536 posted this:
[https://news.ycombinator.com/item?id=10008973](https://news.ycombinator.com/item?id=10008973)

As I see it, it is more or less on the same level of abstraction.

We are not aware of a even higher level tool for computer vision.

------
nashequilibrium
This would be nice as a web service for app developers, POST their images with
selected alogo to be applied and then send it to their S3 bucket.

~~~
infinitone
You can do that with OpenCV, does everything have to be made into a web
service to be used nowadays?

------
Thriptic
Absolutely awesome. I am about to embark on a large image processing / ML
project for work. This is just what I need!

~~~
loomi
That is what is was mainly build for. From a prof for students. (-,

------
willcodeforfoo
Awesome! Tools that give you real-time feedback like this really help those
learning image analysis/computer vision.

~~~
loomi
Thanks for the praise! Even more real-time if you use the webcam image loader.
Than you get your real-time algorithm in real-time. (-,

------
loomi
We are looking for linux package maintainers to introduce ImagePlay to your
favorite Linux distribution.

Please get into contact:
[https://github.com/cpvrlab/ImagePlay/issues/57](https://github.com/cpvrlab/ImagePlay/issues/57)

------
rndn
Looks very nice. ImageJ is another great free image processing tool:
[http://imagej.nih.gov/ij/](http://imagej.nih.gov/ij/)

I’ve used this for example for removing a gradient background from a
photographed text document which worked really well.

~~~
loomi
Indeed, we use ImageJ in our lab often. Mostly after we did prototype an idea
really fast in ImagePlay.

------
chrischen
Bug: after loading a 1.5mb image on OS X 10.11 Beta, scrolling in the image
viewer causes it to crash.

EDIT: Turns out not loading an image and just trying to scroll with the
trackpad (two finger scroll) on the image viewer window causes it to crash.
Normal scroll bars actually work.

~~~
loomi
Thanks! We appreciate bug descriptions:
[https://github.com/cpvrlab/ImagePlay/issues/55](https://github.com/cpvrlab/ImagePlay/issues/55)

------
bobajeff
It's awesome to have another open source image processing library to learn
from and build on in addition to: G'MIC, ImageMagick, VIGRA, VIPs,
Kritaimage+Pigment and GEGL. Just imagine all the great things that can be
built for artists and designers.

~~~
loomi
ImagePlay focuses more on the intuitive interface for education and rapid
prototyping then to be a complete image processing library. That is exactly
why it is splendid for artists and designers.

For artists, where platform independence is less important, I can also point
you to [http://www.am-cb.net/emotion/](http://www.am-cb.net/emotion/) .

------
fla
Looks like a nice tool to prototype for OpenCV.

Question: What made you choose the classical QT gui over QML ?

~~~
loomi
The project was started quite some time ago. Today we mainly use QML in our
projects.

------
Dobiasd
Wow, that is totally awesome and potentially can save me a lot of time in the
future. Up to now I prototyped most of my OpenCV stuff with small python
scripts. I guess this has changed now. :) Where is the donate button?

~~~
loomi
Thanks for the praise!

If you seriously consider to donate we look into a solution for that. What
would the community like as platform?

~~~
Dobiasd
Perhaps PayPal?

~~~
loomi
We are setting up a PayPal Donate button soon!

~~~
loomi
Please find the PayPal button at
[http://imageplay.io/#feedback](http://imageplay.io/#feedback)

------
andybak
Any tool like this really really needs to come with some examples. It's so
much more inviting and inspiring when you can play with a range of existing
set-ups.

(Maybe it does - but if so I don't know where they are)

~~~
loomi
That is a great proposition. We added some pictures for now(not yet easy to
find in OSX version).

But I guess we will provide some simple process chains to start of.

------
adaml_623
This looks cool but I'm sure I used something similar over 20 years ago
running on a Unix workstation at a university.

Of course I don't think it was accessible to everyone back then. I'll try and
find it.

~~~
loomi
You think of this stuff?
[https://news.ycombinator.com/item?id=10008958](https://news.ycombinator.com/item?id=10008958)

------
oh_teh_meows
I used to play with roborealm when it was still free; it provides the same
sort of high level abstraction to experimenting with computer vision and comes
with a big library of filters/kernels.

~~~
loomi
Thanks for the pointer!

------
loomi
It is in late beta stage. Any comments and help is highly appreciated.

~~~
pmelendez
Which can of help are you looking for?

~~~
loomi
The usual kinds of help (like any help! (-, ):

\- Providing new ideas

\- Bug finding

\- Bug fixing
([https://github.com/cpvrlab/ImagePlay/issues](https://github.com/cpvrlab/ImagePlay/issues))

\- Documentation (improvements)

\- Website (improvements)

~~~
pmelendez
Sounds good... I will check the repo later to see if I can help with some bugs
:)

------
tuyguntn
Awesome project, can this compete somehow with photoshop in the future?
Project has almost everything, custom plug-ins, custom filters, open source,
devs can develop bindings and etc,.

~~~
dr_zoidberg
I don't think so, Photoshop (and GIMP too) are oriented to the photographic
community: the UI, the tools, most plugins, etc. This seems to be more aimed
to students and researchers. Though in theory, if the processing engine in the
back is as good (and there's no reason to think it isn't), it could, the UI
would get in the way to perform the same tasks that you would on PS.

~~~
marpstar
First thing I thought about when I saw this was "can my wife, a photographer,
use this instead of creating Actions in Photoshop to automated certain
enhancements?" She does a lot of manual tweaking, but I'm going to show this
to her tonight and see what she thinks.

~~~
loomi
Uhh, please just let us remind you that it is in beta, late beta but still
beta. So be careful in a professional setup.

------
amelius
This is really cool.

(On a sidenote, I bet the creators would have loved to have this run inside
the browser; the fact that this cannot be done again shows how broken the web
is).

~~~
loomi
Thanks for the praise!

(We actually never thought of building it for the web up to now. The Image
Processing community mostly still write in C++ to be able to optimize the code
to the bare metal. But it seems that there are solutions emerging (ASM.js and
cohorts) for the broken web.)

~~~
loomi
Also we are happy not to pay for all the CPU cycles (-,

------
scriptproof
How it compares to Gimp? I use this tool to do various processing (mainly
photomontages), and there is a lot of filters, so, what is added by imageplay?

~~~
loomi
Gimp is user friendly image editing software. It hides away as many as
possible of the gory details.

Imageplay on the other hand is there to prototype and learn about image
processing. You can build complex pipelines with basic image manipulation
algorithms. As all code is available you can later on use your own design
algorithm in your projects.

Also you can directly stream from the WebCam to this pipeline, something Gimp
can not. (-,

~~~
rer0tsaz
If you want gory details, try G'MIC[1]. It has plugins for GIMP and Krita, an
online version[2], a ridiculous number of filters[3] and features, and a
command language. On the other hand, it makes things like imagemagick look
simple and user friendly. My favorite quote from the "Beginner's Cookbook":

> The image of a finger or a brush pushing along paint immediately brings to
> mind tensor fields, produced by -diffusiontensors, which directs
> asymmetrical smoothing kernels in the -smooth command to diffuse noise
> parallel to detected edges

[1] [http://gmic.eu/](http://gmic.eu/) [2]
[https://gmicol.greyc.fr/](https://gmicol.greyc.fr/) [3]
[http://gmic.eu/gimp_filters.txt](http://gmic.eu/gimp_filters.txt)

~~~
loomi
I was not aware of G'MIC. We could try to implement a G'MIC process which
gives access to this filters.

Does G'MIC also provide a ImagePlay like interface?

------
god_bless_texas
Awesome project, I can't wait until there is a section on the website talking
about "use this chain if you want X".

~~~
loomi
Yes, you are not by any chance a full web stack developer looking for a open
source project to invest some time? (-,

~~~
god_bless_texas
No but I would be flattered to contribute what I find and organize it for you
guys!

~~~
loomi
Yes please!

------
_pmf_
I've thought about something similar, with the ability to generate sprite
sheets.

Is this possible with this tool?

~~~
loomi
I am not sure what features you exactly want for your sprites. But in general
you could create a Plug-In which saves sprites yes!

------
72deluxe
Run, do not do anything (do not add a filter, load images etc.) click + in
Image Viewer - kaboom!

~~~
loomi
We know since today (-,

[https://github.com/cpvrlab/ImagePlay/issues/51](https://github.com/cpvrlab/ImagePlay/issues/51)

If you find other bugs just shout!

------
loomi
Please find lots of bugs mentioned here fixed in the new ImagePlay
6.0.0-beta.4.

[https://news.ycombinator.com/item?id=10059506](https://news.ycombinator.com/item?id=10059506)

------
FraKtus
Nice, it run on Mac Yosemite but has problems on 10.8 probably because of
OpenCV ...

~~~
loomi
We tested with Mavericks 10.9, 10.8 we never tried. We might investigate this.
Should not be a biggy.

------
angersock
Wait!

You _need_ a license on this source code. You don't have one. That is very,
very bad.

~~~
loomi
[https://github.com/cpvrlab/ImagePlay/blob/master/license.md](https://github.com/cpvrlab/ImagePlay/blob/master/license.md)
?

~~~
angersock
Put it in the readme or root directory like everyone else?

~~~
loomi
Yeah I see what you mean! Thanks.

I put a link form the readme to the license. The license itself is in the root
directory of the project, not the source code directories. Might copy them
there.

------
rebootthesystem
Please change the title. If it requires compiling it is far from being "for
Everybody".

It definitely is a neat project. Like it.

~~~
callumjones
It doesn't require compiling on OS X and Windows, so for the most of
"everybody" it's accessible.

~~~
rebootthesystem
I just saw that the executable (on Windows) is in the zip file within the
source.

I think what I said still holds to a good degree. Most users expect (and need)
the installation to proceed through "setup".

That's not to say it isn't a neat tool.

I think the title stresses the wrong thing. It's a neat tool that allows you
to play with image processing operations. It has nothing to do with being "for
everyone" and more to do with making experimentation with image processing
techniques easy as drag-and-drop. That's the value proposition.

Probably nit-picking.

~~~
loomi
I agree, the title might be a bit on the marketing side of things. (-,

Sorry about that.

~~~
rebootthesystem
No worries. Are you the author? Great work!

I looked at it quickly, will play with it more later. Do you have Dilation and
Erosion in there?

Does it do video or image sequences and related motion-relevant algorithms?

~~~
loomi
Hey, we are a bunch of people working on ImagePlay the biggest contributor is
my colleague smk2.

Yes definitely we have Dilation and Erosion. Yes there is a way to work with
image sequences, but there are no motion-relevant algorithms implemented yet.

------
antrover
Crashes every time I open it up on 10.9.5.

~~~
loomi
Weird, working fine here on 10.9.5. (Yes, also not on latest system yet (-,
...) Please provide details, best directly as an issue:
[https://github.com/cpvrlab/ImagePlay/issues](https://github.com/cpvrlab/ImagePlay/issues)

------
plicense
Also, how do you connect processes in Mac?

~~~
loomi
CTRL, do you think CMD would be more intuitive?

~~~
plicense
Ah yes CMD would be better! Thanks!

It was not in the tutorial as well. The tutorial says "Drag with the right
mouse button..."

~~~
loomi
Hey, we will definitely add this to the tutorial thanks.

[https://github.com/cpvrlab/ImagePlay/issues/52](https://github.com/cpvrlab/ImagePlay/issues/52)

------
Numberwang
I'm not so sure that blue background image used is without copyright..

~~~
kachnuv_ocasek
What makes you think so? (Honest question, I don't recognize it from
anywhere.)

------
mstdokumaci
i couldn't find any way of adding images to it as a start. (OSX)

~~~
loomi
Okay this might be a use full hint to show in the beginning: To load an image
simply use the "Load Image" process in the "Input/Output" category.

You can also directly access the WebCam this way if that is your style (-,

~~~
loomi
Tracked here:
[https://github.com/cpvrlab/ImagePlay/issues/45](https://github.com/cpvrlab/ImagePlay/issues/45)

------
sebastianavina
can i recognize text with this app?

~~~
loomi
nope, this is not supported out of the box

------
kungfooman
GPL = kthxbye

~~~
loomi
We think GPL makes sense here, as we like to make profit everybody from
improvements in the main software.

You can build your own Plug-Ins which you don't need to GPL.

Glad you visited, good bye. (-,

~~~
yaur
> You can build your own Plug-Ins which you don't need to GPL. This is
> incorrect. In general to allow non FOSS plugins you need to use the LGPL
> instead. If this is something you care about you might consider licensing
> the main app/plugin in system under the LGPL and the plugins you provide
> under the GPL.

~~~
loomi
Hm we like it more the other way around. That the application and from us
provided Plug-Ins are GPL and people are free to license there Plug-Ins as
they please.

Anyway we will for sure not do any legal actions against Plug-In developers.

