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.
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?
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. (-,
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
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.
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?
> 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.
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.
Uhmmm, okay. I guess have multiple ways to receive money -- e.g., some folks like to give "anonymously" via Bitcoin, some folks are okay with Paypal, some are not, etc. etc.
Thanks. By the way, I suggest making a dedicated 'donate' page, as linked by a 'Donate' button in the navigation bar (to the right of '[...] - Download - Github - Twitter')
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.
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 :)
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.
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.
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.
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.)
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]
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,.
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.
I have used GIMP a little, GIMP is great, but my experience with it, was not enjoying. only advantage I could see using GIMP over photoshop is probably because it is free.
Try Krita.org then. It’s free, too, and a bit more focused on creative work, but it supports all the colorspaces, all the vector layers and everything. A lot more usable than GIMP, too.
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.
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
"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 ).
Yes. Functions or methods or procedures is preferable to processes. "Processes" implies threads or independently executing activities, like multiprocessing.
For what I know, "processes" is an established term in component-based paradigms like flow-based programming, which this system seems to have many similarities with.
I guess it's what you are used to. Back in the days I toyed with music production and actual hardware units usually had names like synthesizer/flanger/phaser/equalizer/mixer/processor (so not the verbs like synthesize/flange/phase/equalize/mix/process) and I just took over those. There might be counter examples of course but I cannot come up with one atm.
169 comments
[ 1.9 ms ] story [ 233 ms ] thread- Providing new ideas
- Bug finding
- Bug fixing (https://github.com/cpvrlab/ImagePlay/issues)
- Documentation (improvements)
- Website (improvements)
You can also directly access the WebCam this way if that is your style (-,
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. (-,
> 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/ [2] https://gmicol.greyc.fr/ [3] http://gmic.eu/gimp_filters.txt
Does G'MIC also provide a ImagePlay like interface?
[1] http://www.hpl.hp.com/techreports/92/HPL-92-96.pdf
[2] http://www.cs.ioc.ee/~khoros2/k2tools/cantata/cantata.html and http://www.cs.ioc.ee/~khoros2/k2tools/cantata/basics-cantata...
I definitely need to ask him if he know about these.
Hough line detection seems to be complaining about some opencv issue.
Other than that it's pretty good.
1) Like described here or different? https://github.com/cpvrlab/ImagePlay/issues/40
2) https://github.com/cpvrlab/ImagePlay/issues/46
Happy you like it!
[1] http://www.complang.tuwien.ac.at/schani/mathmap/
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?
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/
You basically get access to pixel values and can then do whatever you want. Might not be comparable to what mathmap does though.
- on your own GitHub account?
- a ImagePlay Plug-In Repo?
- or integrated directly in the main Build?
Thanks so much@
1: http://petapixel.com/2015/03/16/9-photo-composition-tips-as-...
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 :)
But we love to have pull request for the website. https://github.com/cpvrlab/ImagePlay/tree/gh-pages
Thanks!
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.
Can this handle:
1. int16 and float data
2. 3D datasets
Question: What made you choose the classical QT gui over QML ?
[1] https://en.wikipedia.org/wiki/Scale-invariant_feature_transf...
https://github.com/cpvrlab/ImagePlay/wiki/Plugins:-01-Tutori...
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 [2] http://dsp.stackexchange.com/questions/1288/what-are-some-fr...
You might also look into the from rer0tsaz proposed (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.
Since they did away with version for Cloud base, I think Gimp have an advantage.
Minor nitpick, that reads like you are mocking your own product.
Under the hood we have here ImagePlay 6.0 which is a rewrite of good old trusty Borland C++ code.
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.
Also, IMHO a high level abstraction would be preferred when porting/coding said logic to another programming language.
It was not in the tutorial as well. The tutorial says "Drag with the right mouse button..."
https://github.com/cpvrlab/ImagePlay/issues/52
On many laptops right-dragging can be tricky.
Is this possible with this tool?