Thursday, July 07, 2011

Fast Image Cloning Library

I've written a fast image cloning library which you can download here. MIT license. It's loosely based on this paper. It differs from it in a couple interesting ways which you can read about in the readme file.

When I saw image cloning for the first time, the only explanation I could come up with was that it must be magic. I subsequently learned that there are a situations where it works beautifully, and many other situations where it falls over. Nonetheless, when it works, it's lovely. My fond hope is that someone will use it for some cool interactive application.

A couple things I didn't mention in the video: 1) transformations can be any combination of scaling, translation and rotation; 2) it's only Linux and Mac so far (gts is the only potential problem for Windows). If anyone ever gets it going on Windows, I'd love to hear from you.

Drop me a line if you find it useful or have questions. kevin dot atkinson at gmail dot com.

[Update] Or how about this: if you like the library, send me a Google+ invite!

[Update 2] Google+ invite sorted! Thanks Nick!


Blogger jvcleave said...

Got the link from the OF Forums - will certainly try it out. Thanks!

9:33 PM  
Blogger Kert Gartner said...

Step 1: Throw a simple UI on this
Step 2: Make this an iPhone App
Step 3: Team up with
Step 4: Profit!

1:06 PM  
Blogger The Method Artist said...

Kert: my response to your comment: 1) Ha, funny, good one, Kert! 2) Hm, not a bad idea at all.... ;-)

1:16 PM  
Blogger tomwilson said...

Anyone managed to get this to build + run?

I have it building but it crashes at the line :
m_fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);

in the FastLaplaceComper constructor .. i googled around and that seems to happen if the opengl context is not created yet when you call glCreateShader.. i can't find where that is supposed to happen though.

11:16 PM  
Blogger The Method Artist said...

Hi Tom,

I suspect you probably haven't called glewInit() yet, so the glCreateShader function pointer is null. Give that a whirl and let me know how it goes.



11:22 PM  
Blogger tomwilson said...

glewInit() has been called (and I checked the return value and it succeeded). Any other ideas?

11:39 PM  

Post a Comment

<< Home