Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Image Processing for Everybody (imageplay.io)
451 points by loomi on Aug 5, 2015 | hide | past | favorite | 167 comments



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/


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.

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


We provide a C++ API: https://github.com/cpvrlab/ImagePlay/wiki/Plugins:-01-Tutori...

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


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


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?


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.


Okay, looking forward for a main build contribution!


Cool, absolutely looking forward to this.


Can I just say that I for one am incredibly glad you made this program, regardless of whether the GIMP plugin exists?

Thanks so much@


We are happy you like it. Thanks for the support.


I am so ecstatic that I would even pay for this program. (I'm not a person who is usually willing to pay for computer applications).


Okay then please keep your excitement, we are looking into a solution. Most probably PayPal Donation button. ok?


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.


I see, we provide for now a PayPal button at http://imageplay.io/#feedback


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')


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

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


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


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


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.


We will discuss this internally. We have not given to much though on nomenclature. It is mostly historical use.

Under the hood we have here ImagePlay 6.0 which is a rewrite of good old trusty Borland C++ code.


I removed the "so called" for now. Thanks


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

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


Seems to have a couple of issues on the mac - the image viewer doesn't seem to show anything (zoomed in view works, but no image in main display).

Hough line detection seems to be complaining about some opencv issue.

Other than that it's pretty good.


Thanks a ton for the feedback.

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!


Slightly different, I'll add an issue for when I get some time this afternoon.


You are the best! Thanks


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.


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


That is cool, fully web based. Thanks.


Definitely worth having a look at them as they will have faced and (maybe) solved quite a few of the same issues you'll be facing.


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...


ROOT and SIFT are patented, that's why ORB was developed for OpenCV. It's mentioned in the OpenCV tutorials: http://docs.opencv.org/master/db/d27/tutorial_py_table_of_co...


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...


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 [2] http://dsp.stackexchange.com/questions/1288/what-are-some-fr...


Aren't SURF and ilk free and pretty performant?


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.


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.


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-...


You should look up the original, you will see it's not so centered on the eye. wink wink. know what I mean. nudge nudge.


Hehe good observer skills! I did not realize that yet.


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


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) 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.


Yes, or with programs that I could use on the command line, like ImageMagick's convert.


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


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


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=8704629


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!


Don't worry about it.


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 :)


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

Thanks!


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.


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


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


Straight to issues please if you have a GitHub account: https://github.com/cpvrlab/ImagePlay/issues

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


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


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.


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


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


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.


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.


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 ?


Before leni536 posted this: 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.


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.


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


We have someone at a partner university working on something like this. Also we had a first talk.

The final idea would be that you design your process on ImagePlay. As soon as you are happy with the result we upload it to the web service.


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


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


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


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. (-,


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


Looks very nice. ImageJ is another great free image processing tool: 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.


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


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.


Thanks! We appreciate bug descriptions: https://github.com/cpvrlab/ImagePlay/issues/55


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.


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/ .


Looks like a nice tool to prototype for OpenCV.

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


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


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?


Thanks for the praise!

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


Perhaps PayPal?


We are setting up a PayPal Donate button soon!


Please find the PayPal button at http://imageplay.io/#feedback


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)


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.


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.



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.


Thanks for the pointer!


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


Which can of help are you looking for?


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

- Providing new ideas

- Bug finding

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

- Documentation (improvements)

- Website (improvements)


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


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.


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.


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


I read somewhere Gimp is more web base and Photoshop can be both print and web.

Since they did away with version for Cloud base, I think Gimp have an advantage.


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.


Excellent answer, I can't add more (except that we don't know about the processing engine of Photoshop (-, )!


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).


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.)


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


I wouldn't say the web is broken it's just not up to such a demanding task, yet. SIMD.js should be in Ecmascript 2016 (JS7). Once available, traditional image, audio and video processing techniques should be viable on the web.


(Not sure if parent is brilliant satire or not)


Or secretly trying to goad someone into porting it


If they secretly also try to donate the work doing it, we would love doing it (-,


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

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


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?


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


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


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


Yes please!


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

Is this possible with this tool?


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!


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


We know since today (-,

https://github.com/cpvrlab/ImagePlay/issues/51

If you find other bugs just shout!


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

https://news.ycombinator.com/item?id=10059506


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


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


Wait!

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



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


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.


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

It definitely is a neat project. Like it.


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


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.


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

Sorry about that.


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?


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.


Thanks for the clarification.

Exactly for the "everybody" operating systems we provide a build. We hope soon to also sign them for even easier use.


Crashes every time I open it up on 10.9.5.


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


Also, how do you connect processes in Mac?


CTRL, do you think CMD would be more intuitive?


Ah yes CMD would be better! Thanks!

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


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

https://github.com/cpvrlab/ImagePlay/issues/52


Yep. I got stuck on this.

On many laptops right-dragging can be tricky.


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


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


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


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 (-,



can i recognize text with this app?


nope, this is not supported out of the box


GPL = kthxbye


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. (-,


> 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.


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.


Does the licence need to be copy-left for that?


Sorry I don't get you, can you rephrase please. It is open source and hence copy-left .. ?


Something can be open source, yet not copy-left. For example, the MIT licence allows commercial usage and modification.


True, in this case we decided to have GPL because we love to also get back new developments on ImagePlay for our students.

On the other hand we are open regarding Plug-Ins.

I hope this makes sense? At the end we are not specialist on the legal end of things.


Personally, I think it's a shame. GPL generally puts me off as the licence is too complex for me to understand and I don't understand in what situations I can and cannot use it. MIT, BSD etc are simple enough that even without a legal brain I can get the gist of what I can and cannot do.


If I take the MIT license and add a single word, and it would make it incompatible with every other license out there.


I don't understand your point? You can change the GPL licence too if you were so inclined?


You can't make "profit" when your "customers" make no profit. Poor people barely donate a lot.


Okay, but at the end this is not too much about profit.

More to give teachers in the world a tool for teaching Image Processing in a more intuitive way. They anyway will not make profit I guess with ImagePlay.

But if you find someone willing to "donate" enough we might switch license (-,




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: