Some updates

I added two the Imageprocessing Library some new blurs. RadialBlur, ZoomBlur and GeometricDisplacedBlur. The GeometricDisplacedBlur is very nice, because you can use any GeometricMap with this filter.

I also added a RedEyeRemoval and made some updates to the Color class. Some other filters have been updated as well. I will focus now on some examples and more GeometricMap objects. I am also thinking about filters for HSV color correction and this stuff. But that is not very hard since it is only the ColorMatrix that has to be extended. I am also trying to find good ways for texture synthesis (that will not freeze Flash for 10 seconds).

If someone has any idea for filters that are missing just post it here please.

26 Comments

  1. guRuQu
    Posted Feb 12, 2007 at 11:07 am | Permalink

    Hi, genius. Your things looks pretty impressive to me. It really inspires me to do some serious action programming too. But all that I used before to program a action script is Flash itself, can you please introduce us some easy to use , easy to understand enviroment and IDEs? please? We are really interested in what action genius is using to do the thing. Please do give us some post on this kind of topic, thanks!!

  2. Marc
    Posted Feb 12, 2007 at 5:11 pm | Permalink

    @guRuQu: You can either use Adobe Flex Builder, Eclipse with MTASC or Flashdevelop :)

  3. guRuQu
    Posted Feb 13, 2007 at 3:30 am | Permalink

    wow! I rather prefer , Eclipse~~~ Thanks Marc!

  4. Mike M
    Posted Feb 13, 2007 at 2:58 pm | Permalink

    What an astounding piece of work – my requests for further dev would be:

    Simple mask, takes an input greyscale mask, and src image – spits out image with alpha mask applied as per input mask (black = transparent, white = solid or vice versa).

    Wind filter – like in photoshop – applies a streaky paint effect in any direction.

    Motion blur – does what it says on the tin, again a photoshop filter.

  5. Mike M
    Posted Feb 13, 2007 at 7:02 pm | Permalink

    Hmm, getting a compile error from your batch file:

    C:\Program Files\Adobe\flex2SDK\bin\ImageProcessing\lab\Main.as(12): col: 54 Err
    or: Definition de.popforge.imageprocessing.filters.simplify could not be found.

    import de.popforge.imageprocessing.filters.simplify.*;

    Any suggestions?

    Cheers

    M

  6. Posted Feb 13, 2007 at 7:12 pm | Permalink

    Oh, the lab is outdated. I am sorry but there is no longer the simplyfiy package since Pixelate has been moved to the noise package.

  7. Marc
    Posted Feb 24, 2007 at 3:44 am | Permalink

    I’am getting a compile error saying that the SWC couldn’t be loaded: multiple points (using your batchfile). I get the same error warning in Flex Builder (2.01 both SDK and Builder) ..

    Any clues?

  8. Brude
    Posted Feb 24, 2007 at 6:29 pm | Permalink

    I’m getting a the same compile error while running your batch file. I’m guessing the .zip file is missing some files/folders? Please let us know how to fix this. thanks,
    -bryan

  9. Posted Feb 24, 2007 at 6:54 pm | Permalink

    i will have a look monday. sb else got the same problem…because of the flexbuilder version etc. he could fix it but i will tell you what is going on asap

  10. Patrick
    Posted Mar 10, 2007 at 2:08 am | Permalink

    I’m not sure about this but I think Flash can store JPEG images with alpha-channel using JPEG for RGB and zlib for the alpha channel. I found JNG, a file format that seems to offer exactly the same thing. Could something like that be done in the Imageprocessing Library? What do you think?

  11. Posted Mar 16, 2007 at 3:59 pm | Permalink

    >>I got the same error about compiling….”multiple points”, I’m using flex 2.0.143459….somebody found a solution about it ?

  12. Posted Mar 16, 2007 at 6:06 pm | Permalink

    Now…i updated Flex to 2.0.1 verion, the only error i got is about simplify …still i can’t obtain any result…I mean…i do not get any error importing class de.popforge…..but i don’t see anything on player, does somebody sa a simple working sample of IP use so i can learn how to implement it ?

    Thank u :)

  13. Posted Mar 16, 2007 at 10:12 pm | Permalink

    Remove

    import de.popforge.imageprocessing.filters.simplify.*;

    and add instead

    import de.popforge.imageprocessing.filters.noise.*;

    I am sorry, I just updated the swc in the zip file but not the example. I will do so with the next release.

  14. Posted Mar 18, 2007 at 3:24 am | Permalink

    Finally i get it, i’m studying library u built, very nice idea and fine realization, i’m taking a look to ICaptureDevice , just wondering about use an FLV as videoSource…i thouhgt another class should implement this interface, is it possible someway to do that or see how interface is written ?

    Anycase thanks for ur job&ideas :)

  15. Posted Mar 18, 2007 at 3:00 pm | Permalink

    Hey, is the documentation not explaning enough?
    http://je2050.de/imageprocessing/de/popforge/imageprocessing/capture/ICaptureDevice.html

    Anyways a class for that will be inside the next release.

  16. Posted Mar 19, 2007 at 2:11 am | Permalink

    Yeah the documentation is enough…guess i’m just new to these stuff, i don’t figure out the way to implement with FLV…anycase i’ll study it :) thank u for interest.

  17. Posted Apr 9, 2007 at 12:26 am | Permalink

    Hey i have done a filter similar to the Polar Coordinates filter in photoshop. Unfortunately i wasn’t able to interpolate the pixels correctly but maybe you can make it better and also faster would be nice ! Have a look here

    http://labs.blitzagency.com/?p=118

  18. LowMoose
    Posted Jul 6, 2007 at 1:48 pm | Permalink

    Hey joa, great stuff. I’ve been trying to do webcam image processing myself, but it fell through because it wasn’t fast enough. I can understand not releasing the source, but could you at least reveal how you’re looping through pixels in BitmapData?

    I’ve tried a regular for loop with GetPixel() then SetPixel(), and also doing GetPixels() then looping through the ByteArray and using SetPixels() at the end – but both of these methods end up taking 95% CPU time even without actually doing anything to the pixel data.

  19. Posted Jul 6, 2007 at 2:00 pm | Permalink

    That really depends on what you are trying to do. I found lot of new performance optimizations. For a 2048×2048 pixel image I can do a real contrast correction now much faster by finding the average in 300ms.

    That is still a lot but quicker than normal loops take (about 1sec). But this is only faster for large images.

    Just that you get an idea how it looks like. This is a part from a performance guide my company will release soon when I have some time to finalize it:

    var y: int;
    var x: int;
    var m: Boolean = true;

    while ( true )
    {
    c0 = bitmapData.getPixel( m ? x++ : --x, y );

    if ( x == w || x == 0 )
    {
    if ( y++ == h )
    break;
    m = !m;
    }
    }

  20. LowMoose
    Posted Jul 6, 2007 at 3:37 pm | Permalink

    I’m trying to do real time analysis on a webcam image without the frame rate dropping below 30 fps. 320×240 would be nice, but 160×120 is enough.

    Here’s how I did a simple threshold, which I thought to expand into some more complex processing. But if I comment out the if clauses and leave just the reading and writing, it still takes up most of CPU time, even with a 160×120 webcam image.

    In the constructor:

    frameData = new BitmapData(videoWidth, videoHeight, false);
    frame = new Bitmap(frameData);
    addChild(frame);
    video = new Video(videoWidth, videoHeight);
    camera = Camera.getCamera();
    video.attachCamera(camera);

    In the onEnterFrame callback function:

    frameData.draw(video);
    for (var py:int = 0; py

  21. Posted Jul 6, 2007 at 3:57 pm | Permalink

    Easy for you would be using the native function BitmapData.threshold. If you want to get as much speed out of it as possible I would suggest precalculated lookup tables and using BitmapData.paletteMap and you should be fine.

  22. LowMoose
    Posted Jul 6, 2007 at 6:16 pm | Permalink

    I don’t really need a threshold for my application. Well, I do, but it’s only the first step in the processing queue. I’m doing a bunch of other calculations as well that don’t have a native function – a bit like a filter queue, but with other data output than just updating the image (shape recognition for a museum installation).

    I just started with a threshold because that’s a very fast operation – but if I can’t even get that to run at decent speed, doing more advanced manipulation of the pixel data doesn’t seem possible, either.

  23. dave
    Posted Jul 20, 2007 at 4:59 pm | Permalink

    Hi, I’m trying to get the lab example to work in the Flash IDE. When I compile it with Mxmlc via compile.bat it works great, but using the same Main.as in the Flash IDE I get:

    VerifyError: Error #1014: Class de.popforge.imageprocessing.filters::FilterQueue could not be found. at global$init()

    Here’s what I did to create the .fla in the IDE:
    * set the .fla project size/fps to same in Main.as
    * saved the .fla in the same folder as ImageProcessing.swc
    * set the .fla document class to Main and validated it

    Am I missing something, or is the lab demo “Flex-only” and there’s no way to convert it? Thank you.

    P.S. this stuff is very cool, keep up the great work.

  24. Mahedi
    Posted Apr 19, 2009 at 7:10 am | Permalink

    Hi, i’m using flex builder 3.When i want to run your example code the following error occured.

    import de.popforge.imageprocessing.filters.color.*;
    import de.popforge.imageprocessing.filters.convolution.*;
    import de.popforge.imageprocessing.filters.render.*;
    import de.popforge.imageprocessing.filters.noise.*;
    import de.popforge.imageprocessing.filters.distortion.*;
    import de.popforge.imageprocessing.filters.morphological.*;
    import de.popforge.imageprocessing.core.*;

    this classes could not be found.

    please help me about that.

  25. Sundance
    Posted Apr 29, 2009 at 1:22 am | Permalink

    Mahedi, have you imported your Lib into your proyect?
    Right Click on your proyect > Select Flex Builder Path > Library Path > Check if you have the component on the Libs folder or add the SWC Folder to the library path.

    Hope this help

    Sundance

  26. Mahedi
    Posted Apr 29, 2009 at 5:28 am | Permalink

    Hi,Sundance thank you very much for replay.Today i’ll apply that strategy and then knock you about the result.

    best regards

    mahedi

Post a Comment

Your email is never shared. Required fields are marked *

*
*