Image processing algorithms on video frames.

Hello.
I am trying to access video frames, one by one, and do image processing on each of them. this practically includes just a comparison of successive video frames to see how much the content is changing so as to detect when the scenes in the video are changing. i am already using a variation of the frame access code by java. i am able to retrieve the individual frames in the 'buffer' format, and i can convert it to .png and save them to hdisk too.
what i need to know is whether i can use the buffer type itself to do pixel comparisons, or i need to convert it to an image first. any1 with experience in image processing in java will probably have an idea. and if u can suggest a package, or code whatsoever available online which can help me in my image processing demands, i would really appreciate that.
thanks!

Hi Greyfox,
You can calculate a checksum on the bytes in a bufferedImage and keep a hold of it and use it to check against the next image like so:
try
          raster = buffImg.getWritableTile(buffImg.getWidth(), buffImg.getHeight());
          imgBytes = ((DataBufferByte)raster.getDataBuffer()).getData();
          // Compute CRC-32 checksum           
     checksumEngine.update(imgBytes, 0, imgBytes.length);
     long checksum = checksumEngine.getValue();
     // Check if it's the same as the previous checksum.
     if (checksum == previousImageChecksum)
          isFrozen = true;
          // Do some logging to try and find out why the image is frozen.
          log.debug("--------- ALERT : DUPLICATE IMAGES FOUND ---------");
          log.debug("Checksum comparison. Current = " + checksum + ". Previous = " + previousImageChecksum);           
     else
          // Give the previous checksum the current value so we can use it for the next check.
          previousImageChecksum = checksum;
     catch (Exception e)
          log.error("Error calculating the checksum.", e);
     // The checksum engine can be reused again for a different byte array by calling reset()
     checksumEngine.reset();

Similar Messages

  • Image Processing Algorithms - From Matlab to Pixel Bender

    Hello.
    Got a few Image Processing (Mainly Image Enhancement) Algorithms I created in Matlab.
    I would like to make them run on Photoshop, Create a Plug In out of it.
    Would Pixel Bender be the right way doing it?
    The Algorithms mainly use Convolutions and Fourier Domain operations.
    All I need is a simple Preview Window and few Sliders, Dropbox and Buttons.
    I'd appreciate your help.

    pixel vs float - Couldn't figure out what exactly is the difference if there is at all. I assume Pixel always get clipped into [0 1] and float won't until it gets to be shown on the screen as an output?
    There is no difference between them. At one stage of development we had some ideas about the way the pixel type should work that would make it different to float, but the ideas never came to anything and by the time we realized that it was too late to change. It's #1 on my list of "mistakes we made when developing Pixel Bender".
    Regions - Let me see if I get is straight. For the example assuming Gaussian Blur Kernel of Radius 5 (Not the STD, but the radius - a 11x11 Matrix). I should use "needed()" in order to define the support of each pixel output in the input image. I should do it to make sure no one changes those values before the output pixel is calculated.
    Now, In the documentation is goes needed(region outputRegion, imageRef inputIndex). Should I assume that at default the outputRegion is actually the sampled pixel in the input? Now I use outset(outputRegion, float2(x, y)) to enlarge the "Safe Zone". I don't get this float2 number. Let's say it's (4, 3) and the current pixel is (10, 10). Now the safe zone goes 4 pixel to the left, 4 to the right, 3 up and 3 down? I assume it actually creates a rectangle area, right? Back to our example I should set outset(outputRegion, float2(5.0, 5.0)) right?
    Needed is the function the system calls to answer the question "what area of the input do I need in order to calculate a particular area of the output?".
    I should do it to make sure no one changes those values before the output pixel is calculated.
    No, you should do it to make sure the input pixel values needed to compute the output pixel values have been calculated and stored.
    Should I assume that at default the outputRegion is actually the sampled pixel in the input?
    No. When "the system" (i.e. After Effects, PB toolkit or the Photoshop plugin) decides it wants to display a particular area of the output, it will call the needed function with that area in the outputRegion parameter. The job of the needed function is to take whatever output region it is given and work out what input area is required to compute it correctly.
    Let's say it's (4, 3) and the current pixel is (10, 10).
    Don't think in terms of "current pixel" when you're looking at the needed function. The region functions are not called on a per-pixel basis, they are called once at the start of computing the frame, before we do the computation for each pixel.
    Back to our example I should set outset(outputRegion, float2(5.0, 5.0)) right?
    Yes - you're correct. Whatever size the output region is, you require an input region that has an additional border of 5 pixels all round to calculate it correctly.

  • How to use the frameaccess code to convert video frames to jpeg files

    Hello everyone. I am working on a project on video processing, and i need to be able to do image processing on individual video frames. However, to do this, I need to convert the frames to an appropriate format, namely jpeg. It is actually the conversion from buffer frame to BufferedImage that is important, as i already have an approximate knowledge of filewriter for the saving of already rendered file.
    The original frameaccess code can be found here: http://java.sun.com/products/java-media/jmf/2.1.1/solutions/FrameAccess.html
    there are several other threads tied to this topic, some of which do not work for me, or simply do not suit my needs, so please do not link me to them unless you are sure its the real solution.
    if any one could help me by showing me the way of doing it correctly, and maybe give a nice short explanation, i would be very grateful.
    Thanks you.
    P.s: i am only a beginner to intermediate student in java and programming in general so...

    Here is the code i am currently using.
    package Test;
    import java.io.*;
    import java.util.*;
    import java.awt.*;
    import javax.media.*;
    import javax.media.control.TrackControl;
    import javax.media.Format;
    import javax.media.format.*;
    import javax.media.bean.playerbean.MediaPlayer;
    import javax.media.util.*;
    import java.awt.image.BufferedImage;
    import java.awt.image.RenderedImage;
    import java.awt.image.*;
    import javax.imageio.ImageWriter;
    import javax.imageio.ImageIO;
    import javax.media.control.FrameGrabbingControl;
    * Sample program to access individual video frames by using a
    * "pass-thru" codec. The codec is inserted into the data flow
    * path. As data pass through this codec, a callback is invoked
    * for each frame of video data.
    public class FrameAccess extends Frame implements ControllerListener {
    Processor p;
    Object waitSync = new Object();
    boolean stateTransitionOK = true;
    * Given a media locator, create a processor and use that processor
    * as a player to playback the media.
    * During the processor's Configured state, two "pass-thru" codecs,
    * PreAccessCodec and PostAccessCodec, are set on the video track.
    * These codecs are used to get access to individual video frames
    * of the media.
    * Much of the code is just standard code to present media in JMF.
    public boolean open(MediaLocator ml) {
         try {
         p = Manager.createProcessor(ml);
         } catch (Exception e) {
         System.err.println("Failed to create a processor from the given url: " + e);
         return false;
         p.addControllerListener(this);
         // Put the Processor into configured state.
         p.configure();
         if (!waitForState(p.Configured)) {
         System.err.println("Failed to configure the processor.");
         return false;
         // So I can use it as a player.
         p.setContentDescriptor(null);
         // Obtain the track controls.
         TrackControl tc[] = p.getTrackControls();
         if (tc == null) {
         System.err.println("Failed to obtain track controls from the processor.");
         return false;
         // Search for the track control for the video track.
         TrackControl videoTrack = null;
         for (int i = 0; i < tc.length; i++) {
         if (tc.getFormat() instanceof VideoFormat) {
              videoTrack = tc[i];
              break;
         if (videoTrack == null) {
         System.err.println("The input media does not contain a video track.");
         return false;
         System.err.println("Video format: " + videoTrack.getFormat());
         // Instantiate and set the frame access codec to the data flow path.
         try {
         Codec codec[] = { new PreAccessCodec(),
                        new PostAccessCodec()};
         videoTrack.setCodecChain(codec);
         } catch (UnsupportedPlugInException e) {
         System.err.println("The process does not support effects.");
         // Realize the processor.
         p.prefetch();
         if (!waitForState(p.Prefetched)) {
         System.err.println("Failed to realize the processor.");
         return false;
         // Display the visual & control component if there's one.
         setLayout(new BorderLayout());
         Component cc;
         Component vc;
         if ((vc = p.getVisualComponent()) != null) {
         add("Center", vc);
         if ((cc = p.getControlPanelComponent()) != null) {
         add("South", cc);
         // Start the processor.
         p.start();
         setVisible(true);
         return true;
    public void addNotify() {
         super.addNotify();
         pack();
    * Block until the processor has transitioned to the given state.
    * Return false if the transition failed.
    boolean waitForState(int state) {
         synchronized (waitSync) {
         try {
              while (p.getState() != state && stateTransitionOK)
              waitSync.wait();
         } catch (Exception e) {}
         return stateTransitionOK;
    * Controller Listener.
    public void controllerUpdate(ControllerEvent evt) {
         if (evt instanceof ConfigureCompleteEvent ||
         evt instanceof RealizeCompleteEvent ||
         evt instanceof PrefetchCompleteEvent) {
         synchronized (waitSync) {
              stateTransitionOK = true;
              waitSync.notifyAll();
         } else if (evt instanceof ResourceUnavailableEvent) {
         synchronized (waitSync) {
              stateTransitionOK = false;
              waitSync.notifyAll();
         } else if (evt instanceof EndOfMediaEvent) {
         p.close();
         System.exit(0);
    * Main program
    public static void main(String [] args) throws IOException {
         /*if (args.length == 0) {
         prUsage();
         System.exit(0);
         //String url = args[0];
         String url = new String ("file:D:FiMs/avpr.avi");
         if (url.indexOf(":") < 0) {
         prUsage();
         System.exit(0);
         MediaLocator ml;
         //MediaPlayer mp1 = new javax.media.bean.playerbean.MediaPlayer();
         //mp1.setMediaLocation(new java.lang.String("file:D:/FiMs/299_01_hi.mpg"));
         //mp1.start();
         if ((ml = new MediaLocator(url)) == null) {
         System.err.println("Cannot build media locator from: " + url);
         System.exit(0);
         FrameAccess fa = new FrameAccess();
         if (!fa.open(ml))
         System.exit(0);
    static void prUsage() {
         System.err.println("Usage: java FrameAccess <url>");
    * Inner class.
    * A pass-through codec to access to individual frames.
    public class PreAccessCodec implements Codec {
    * Callback to access individual video frames.
         void accessFrame(Buffer frame) {
         // For demo, we'll just print out the frame #, time &
         // data length.
         long t = (long)(frame.getTimeStamp()/10000000f);
         System.err.println("Pre: frame #: " + frame.getSequenceNumber() +
                   ", time: " + ((float)t)/100f +
                   ", len: " + frame.getLength());
         * The code for a pass through codec.
         // We'll advertize as supporting all video formats.
         protected Format supportedIns[] = new Format [] {
         new VideoFormat(null)
         // We'll advertize as supporting all video formats.
         protected Format supportedOuts[] = new Format [] {
         new VideoFormat(null)
         Format input = null, output = null;
         public String getName() {
         return "Pre-Access Codec";
         // No op.
    public void open() {
         // No op.
         public void close() {
         // No op.
         public void reset() {
         public Format [] getSupportedInputFormats() {
         return supportedIns;
         public Format [] getSupportedOutputFormats(Format in) {
         if (in == null)
              return supportedOuts;
         else {
              // If an input format is given, we use that input format
              // as the output since we are not modifying the bit stream
              // at all.
              Format outs[] = new Format[1];
              outs[0] = in;
              return outs;
         public Format setInputFormat(Format format) {
         input = format;
         return input;
         public Format setOutputFormat(Format format) {
         output = format;
         return output;
         public int process(Buffer in, Buffer out) {
         // This is the "Callback" to access individual frames.
         accessFrame(in);
         // Swap the data between the input & output.
         Object data = in.getData();
         in.setData(out.getData());
         out.setData(data);
         // Copy the input attributes to the output
         out.setFormat(in.getFormat());
         out.setLength(in.getLength());
         out.setOffset(in.getOffset());
         return BUFFER_PROCESSED_OK;
         public Object[] getControls() {
         return new Object[0];
         public Object getControl(String type) {
         return null;
    public class PostAccessCodec extends PreAccessCodec {
         // We'll advertize as supporting all video formats.
         public PostAccessCodec() {
         supportedIns = new Format [] {
              new RGBFormat()
    * Callback to access individual video frames.
         void accessFrame(Buffer frame) {
         // For demo, we'll just print out the frame #, time &
         // data length.
         long t = (long)(frame.getTimeStamp()/10000000f);
         System.err.println("Post: frame #: " + frame.getSequenceNumber() +
                   ", time: " + ((float)t)/100f +
                   ", len: " + frame.getLength());
         public String getName() {
         return "Post-Access Codec";
    and here is what itprabhu5 proposed to use to convert and save the frames as .png(or .jpeg in the same way)
    import java.io.*;
    import java.util.*;
    import java.awt.*;
    import java.awt.image.*;
    import javax.imageio.*;
    import javax.media.*;
    import javax.media.control.*;
    import javax.media.format.*;
    import javax.media.util.*;
    * Grabs a frame from a Webcam, overlays the current date and time, and saves the frame as a PNG to c:\webcam.png
    * @author David
    * @version 1.0, 16/01/2004
    public class FrameGrab
         public static void main(String[] args) throws Exception
              // Create capture device
              CaptureDeviceInfo deviceInfo = CaptureDeviceManager.getDevice("vfw:Microsoft WDM Image Capture (Win32):0");
              Player player = Manager.createRealizedPlayer(deviceInfo.getLocator());
              player.start();
              // Wait a few seconds for camera to initialise (otherwise img==null)
              Thread.sleep(2500);
              // Grab a frame from the capture device
              FrameGrabbingControl frameGrabber = (FrameGrabbingControl)player.getControl("javax.media.control.FrameGrabbingControl");
              Buffer buf = frameGrabber.grabFrame();
              // Convert frame to an buffered image so it can be processed and saved
              Image img = (new BufferToImage((VideoFormat)buf.getFormat()).createImage(buf));
              BufferedImage buffImg = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_RGB);
              Graphics2D g = buffImg.createGraphics();          
              g.drawImage(img, null, null);
              // Overlay curent time on image
              g.setColor(Color.RED);
              g.setFont(new Font("Verdana", Font.BOLD, 16));
              g.drawString((new Date()).toString(), 10, 25);
              // Save image to disk as PNG
              ImageIO.write(buffImg, "png", new File("c:\\webcam.png"));
              // Stop using webcam
              player.close();
              player.deallocate();
              System.exit(0);                    
    however, i am unable to use it together with my code... i m not even sure if im using it at the right place.. (note that u will have to discard some lines from the second code, because it is actually grabbing frames from a webcam in that example)
    if any1 can make it happen please help me. thx.

  • 8 vs 10-bit (FCP) image processing.

    Is there a noticeable difference between FC Express (8-bit) vs FCP 5 (10-bit) image processing (my DV camera is 12-bit)?
    Thanks for the info!

    FCE isn't 8-bit.
    According to the Apple website, FCE uses 8-bit image processing (while FCP 5 uses 10-bit):
    http://www.apple.com/finalcut/index.html
    (scroll down to "editing" section)
    And your DV camera being 12-bit? That is referring to the AUDIO.
    I have a Panasonic DVX100B, and the audio is PCM 16 bit, 48 KHz sampling. I am refering to the image processing. The video analog-to-digital converters are 12-bit, but you're right DV is quantized to 8-bit.
    FCP 5 handles not only DV, but UNCOMPRESSED 8-bit and 10-bit formats. FCE does not...it only handles DV. Noticable difference? Only to an engineer who scrutinizes the image.
    So, FCP 5 only uses 10-bit processing when working with uncompressed files? Thanks for the info. Sorry, I'm still a little confused.
    If I'm working in standard-definition DV, will FC Express still give me the best image quality available?

  • Stacking video frames to make still image - help please

    Question:
    I want to take 2 seconds of video ( 60 frames )and stack all the video frames to make one still image.
    I just tried to do this in Photoshop CS3 but found out that this requires CS3 extended version. Is there a stacking feature in Final Cut Express? ( Or in iMovie6 ?)
    Any ideas welcome as to how to accomplish this task.
    Thank you in advance.
    Tom

    I would say the best advice has already been given, which would be to use a still camera with a long shutter speed. However I suspect you already have your footage and would need to wait for another opportunity to do this. I'd say the next best option would be a motion blur filter, I think stacking each frame would have its problems.
    You can easily export your 2 seconds of video to single frame images by exporting to an image sequence, you could then import each still as a layer into photoshop. You would probably find that other stars (having 60 images on top of each other) would be very bright and stand out like a bird of paradise's mating ritual, unless you adjusted the opacity of each which you would likely need to do for the whole of the image excepting the shooting star. I'd say it can be done, but it sounds like a bit of work.

  • Video Frame as Image - Help

    Hello,
    I am having some serious problems in trying to get this working
    so if u have any idea to get it working please help.
    Aim : I need screen shots of a movie, what that means is I need certain frames of the movie as images. Say for example, the first frame, the 20th frame, and the 60the frame, ( eg for a 100 frame movie)
    I have been breaking my head with FramePositioningControl and FrameGrabbingControl it keep returning null :(
    I need this to work for all types of movies that i can play with JMF Player. So please tell me if there is any way to get a particular frame from a movie as an image.
    I have looked at vid2jpg.zip and have no clue how to use it.
    Thanks in advance.

    Hi..
    I need to play a video frame by frame. I dont need to extract the frames as images. When I run seek.java with an mpg file, it gives the following output.
    Total # of video frames in the movies: 0
    Step forward 1 frame.
    Current frame: 0
    Step forward 1 frame.
    Current frame: 0
    Step forward 1 frame.
    Current frame: 0
    Step forward 1 frame.
    Current frame: 0
    Step forward 1 frame.
    Current frame: 0 .......so on
    I am not understanding what is the problem. It is neither working with avi files. Please help me.
    pln

  • How to make the graph follows the position of the video frame

    Hai..
    I want to open the video (. avi) and graph together in one VI.. The videos and graphs can be controlled (forwarded or rewind) in the desired position.. However, the graph should follow where's the position of the video frame..   The graph generated from the data in excel, after reading data, then there is the processing of signals, such as filter, mean, find the peak, etc.. After that the result will appear in the graph..
    Until now, I've been able to display video and graph.. I'm trying to use WMP and also IMAQ..
    Because I want to show the position of the graph or signal when the video plays, I was making a cursor or a line on a graph that follows the position of the video..
    First, I'm trying using WMP.. I can forward and rewind video using WMP, after that I make a cursor on the graph and the position of cursor I put in the position video.. And then when I run the program, the signal that arises from the right, but the cursor in the graph follow the position of the video (the cursor appears on the left) different side with the signal..
    I also tried using IMAQ when I tried to use the video controls, so the video can be forward or rewind using the slide, and I made a graph control to follow the video.. But the video isn't playing, it just show only images or frame in the video..
    Can we create a graph that can follow the position of the video? (graph can be in forward and rewind just like with video)
    I've tried many ways but until now have not been successful.. can someone help me?
    Any help is greatly appreciated thank you.

    This should do pretty much what you want, assuming that a slider is how you are controlling your video position. You are going to have to play around with it a little but it should give you the basic idea.
    Attachments:
    Slider.vi ‏35 KB

  • I want to play video on my computer to make some analysis to frames,the problem that I face ,I can't change video frame rate using labview,but I can change frame rate to the video out of labview using some program

    HI All
    I want to play video on my computer to make some analysis to it's frames,the problem that I face ,I can't change video frame rate using labview,but I can change frame rate to the video out of labview using some program .
    I used IMAQ AVI Read Frame VI
    for example I have avi video It's frame rate is 25 fbs ,my image processing code is very fast that can process more 25 fbs,so I want to accelerate video acquisition

    Hi abdelhady,
    I looked into this further, and reading an AVI file into LabVIEW faster than its frames per second won't be possible. LabVIEW could read in frames faster than 25fps, but because it will be pulling the available frame at that point in time this would just give you duplicate frames. If you want to be able to read in frames at faster than 25fps, you would need to speed up your AVI file before reading into LabVIEW.
    There's a good shipping example to show how to read in from an AVI file, "Read AVI File.vi". You'll notice that they add timing to make sure that the while loop runs at the right speed to match up with the frames per second of the file being read. This is to make sure you're not reading duplicate frames.
    Thank you,
    Emily C
    Applications Engineer
    National Instruments

  • Adobe Premiere Saving Issue: Returning a Video Frame

         I have Adobe Premiere Elements 4 and have edited a video on it. The video format is AVI, from a camera that didn't seem to have trouble before this. It is a Sony if that is any help. I'm really hoping it isn't CODEC problems.
         Last night I finished my project and tried to save it on my desktop as a Windows Media movie, but an error popped up saying that "Adobe Premiere failed to return a video frame." I tried other saving styles to no avail.
         Thus I began the process of googling and then trying to solve this saving error by changing my edits. I have removed all Video Effects, except for three black and white shots. I have gone through and checked that I have no gaps, about five times. I saw that my audio (in a wma format) wasn't perfectly aligned with my visuals and had gaps, so I added in audio till there was never a silent moment.
         Is that audio format (wma) acceptable?
         I am playing two soundtracks over each other, one is the vocals and one is the music. The music's format is MP3.
         I have several still shots created with the program with titles over it. At one moment I tried to put a menu on the project, but it didn't work out. When I went to try and delete my attempt, I couldn't find the menu to remove it.
         The piece is about five minutes long. I can't think of anything else to tell you.
         I'm running out of things to change. I'm afraid my CODEC is wrong and I may have to start all over (is there a way to apply a fix to a CODEC error on a project?). Having spent all day on this, I'm at a point of desperation. If I can't get it to work, I'm about to start all over in Windows Movie Maker where at least I know I can save it and turn it in tomorrow.
         Thanks

    For the Audio Assets, the best that one can do is to use PCM/WAV, and use any number of audio-editing programs to convert that.
    Still, your error is "Return a Video Frame." That indicates an error in the Video portion of the Timeline.
    Besides gaps, do you have any overly large still images?
    As for any gaps, did you use the method outlined in the linked article? They can be very hard to see, even when zoomed into the max view (Frame View).
    I still did not see the CODEC of the used AVI files. Can you provide that please, as it might make a differenece?
    Good luck,
    Hunt

  • Video Frame Capture

    Can you capture individual video frames for sharing or printing using Premiere Elements?

    I am with you pal.  Jpeg never has the same quality as an original when viewed up close, and discerning pros will definitely be looking close.  However, when outputting your work, always consider your target.  I do a lot of posts to my Facebook with photographs.  I start with 8megapixel images, crop and enlarge in camera raw, clean some dust, save them in TIFF, then run automation actions in photoshop to add watermarks and save for web, with settings that are conducive to the type of image (action still, steady still, noise reduced still), which saves as Jpeg in a 1920x1080 or similar size based on the crop.  This saves a high def image with some smoothing of the pixels, with a standardized internet rgb color balance.  It holds fairly close to the real file, and from screen size, it's really difficult to tell a difference without pressing your face against the screen.  By compressing with the save for web, I can control the smooth\sharp compression artifacts to a greater degree, and I can ensure a smaller file size for use on the web.  Since most of my audience will sit back and enjoy (i.e., not the most discerning of eyes and not pressing faces against their screen), Jpeg will do fine.
    As for screen caps from video... ...they are never clear when using a single frame.  If you can find two or more frames that don't have motion, export all of them, and have them process together, like with photoshop auto blend, you can usually get better results.  Personally, I process each as an HDR.  The best way I've found for extracting the frames is to create a dupe sequence, then add edit marks around the frames you want, export that to AE, and have AE export to image files as TIFF.  Then I go to work.  I dupe each frame at least twice, and process dark, and light, adding clarity and processing for the detail in each, then I process the main image for the smoother details like solids or skin tones, and combine each set to make an HDR, then I stack the TIFFs again, auto blend and make any adjustments to get the detail.
    I use this when making the main menus of some video discs.  It's an emotional linkup when you're working on a family oriented project (wedding, bar\bat mitzvah, christening, baptism, etc), and it always ups the sell when you show the previews.  On faster systems this doesn't take long, but on my mobile setup, the processing takes hours, while the actual work is more like minutes.  It results in great images, with exceptional clarity.  Even when compressed, they retain better sharpness.

  • Image processing over wireless

    Hi,
    One of our subsidaries has a setup where continuous video stream is generated from certain application servers processing real time image processing.
    The setup goes this way; 3 PC's which run these image processing & are connected to a 3750G switch.
    This switch is uplinked to an access point which then carries all these over wireless to the image processing main server.
    About two weeks ago, when they tested this ,all 3 PC's had issues running together when operators viewed/worked upon the images on them.
    When either one or two of them is turned off, the rest works fine with no disturbance( intermediate stop & start of images ).
    Please help with suggestions on what could be the cause. I suspect bandwidth, but since this doesn't cover any WAN links, i doubt that bandwidth is actually the problem.
    Thanks in advance.

    It depends. QoS will help if your having congestion on the wired side. WMM QoS will help for over the air. I would look at the switch port and see if you see drops on both the map and rap side. You might just be over utilizing the backhaul. Remember that it is half duplex link so that can be an issue also. I had an install with regular AP's and 3gb video uploads within 30 minutes and the only way to achieve that is only allowing 4-5 clients per AP. the testing you have done seems to show that the max you can do over that link is 2. How much other traffic is using the wireless. Maybe try to isolate those traffic on a separate RAP/MAP pair using AP Groups.
    Sent from Cisco Technical Support iPhone App

  • Image Processing Performance Issue | JAI

    I am processing TIFF images to generate several JPG files out of it after applying image processing on it.
    Following are the transformations applied:
    1. Read TIFF image from disk. The tiff is available in form of a PlanarImage object
    2. Scaling
         /* Following is the code snippet */
         PlanarImage origImg;
         ParameterBlock pb = new ParameterBlock();
         pb.addSource(origImg);
         pb.add(scaleX);
         pb.add(scaleY);
         pb.add(0.0f);
         pb.add(0.0f);
         pb.add(Interpolation.getInstance(Interpolation.INTERP_BILINEAR));
         PlanarImage scaledImage = JAI.create("scale", pb);3. Convertion of planar image to buffered image. This operation is done because we need a buffered image.
         /* Following is the code snippet used */
         bufferedImage = planarImage.getAsBufferedImage();4. Cropping
         /* Following is the code snippet used */
         bufferedImage = bufferedImage.getSubimage(artcleX, artcleY, 302, 70);The performance bottle neck in the above algorithm is step 3 where we convert the planar image to buffered image before carrying out cropping.
    The operation typically takes about 1120ms to complete and considering the data set I am dealing with this is a very expensive operation. Is there an
    alternate to the above mentioned approach?
    I presume if I can carry out the operation mentioned under step 4 above on a planr image object instead of buffered image, I will be able to save
    considerable processing time as in this case step 3 won't be required. (and that seems like the bottle neck). I have also noticed that the processing
    time of the operation mentioned in step 3 above is proportional to the size of the planar image object.
    Any pointers around this would be appreciated.
    Thanks,
    Anurag
    Edited by: anurag.kapur on Oct 4, 2007 10:17 PM
    Edited by: anurag.kapur on Oct 4, 2007 10:17 PM

    It depends on whether you want to display the data or not.
    PlanarImage (the subclass of all renderedOps) has a method that returns a Graphics object you can use to draw on the image. This allows you to do this like write on an image.
    PlanarImage also has a getAsBufferedImage that will return a copy of the data in a format that can be used to write to Graphics objects. This is used for simply drawing processed images to a display.
    There is also a widget called ImageCanvas (and ScrollingImagePanel) shipped with JAI (although it is not a committed part of the API). These derive from awt.Canvas/Panel and know how to render RenderedImage instances. This may use less copying/memory then getting the data as a BufferedImage and drawing it via a Graphics Object. I can't say for sure though as I have never used them.
    Another way may be to extend JComponent (or another class) and customize it to use calls to PlanarImage/RenderedOp instances directly. This can hep with large tiled images when you only want to display a small portion.
    matfud

  • Image processing Manupulation problem!!!

    Dear all,
    God Morning! hope u all are fine .. i have an issue regarding Image processing Manipulation.
    i want to give u all the details.. what i have done so far in java.
    i have used third party tool of java called ImageJ editor for image manipulation.i got the source of it i have made neccessary customization to store / fetch the image from my table (Database).now this editor is working fine when i click on open option from menu bar it fetches the image from database and after fetching it put the image on container where one can edit/ modify the image and save it back to the table.
    the above proceeds me to display or store the edited image on the database . now i just want to integrate the editor on browser ..
    how to call the class file when i click on the link on specified page and also how to pass parameter from jsp page to java class file.??
    please help me to sort out d problem
    "Thanks and regards"
    Jonty

    Increasing the contrast springs to mind.
    When used to extremes it is sometimes called
    'cartoonising'
    Suppose your image was in 16 colors, you could
    reasonably safely assume at least two are red, two
    are blue, two are yellow ect.
    With regards an algorithm you are looking to 'round
    off' the color values to (my suggestion only) the
    nearest 64 or even the nearest 127...
    Bamkinjust be careful of that ORANGE color. Orange is a tricky color to define in either RGB or HSB, and is very similar to red and yellow. A little change in either direction makes it difficult to distinguish from one or the other.
    my thought would be to try to force your image to only six colors. Then those colors (it wouldn't really matter if they were accurate, as long as they are correctly distinguished) would be easy to identify.
    - Adam

  • Image Processing Cells Manipulation

    Hi Guys,
    I am working on cells manipulation. Due to the nature of image processing which scans from a top-down-left to right approach, i am unable to fix a index number on the specific cell which I required this information in order to manipulate the cells as my command. The image processing will be running throughout the programme. As attached is the picture of the Imaq count objects i am using. 
    On a side note, just want to ask a biology-related experiment if anyone encounter the same issue before, why is a cell easily stuck onto the surface as this action prevents the cells from being trapped once it get stuck on the surface of the cover slip. 
    Thank you in advance,
    Scott
    Attachments:
    Image Processing.png ‏227 KB

    Hello,
    yes I understand your problem. But it seems to me that the scan direction has no effect on this... What if the scan direction was from bottom-up, left-to right and the cell flows in from the left bottom corner? You would have the same problem...
    Or do new cells flow into FOV of the camera only from top-left corner? Could you count the number of objects and linearly increment the indexes of your cells? For example, the first cell that comes into the FOV of the camera has index 0, and when the next cell is introduced, the first cell will have an incremented index that equals 1. And so on...
    But if the new cells come into the FOV of the camera randomly from left, right, bottom, top, etc... it would be more difficult. What you could do is calculate some parameters (check particle measurements in NI Vision Concepts)  for the cell you want to manipulate (at the time when you are sure this is the correct cell) and then compare these parameters with the cells on every subsequent frame. You can build a feature vector of these parameters and use classification tools. When you classify the cell, then you would have no problems manipulating it.
    If your cell changes shape dynamically, then I do not see a way to do this.
    Best regards,
    K
    https://decibel.ni.com/content/blogs/kl3m3n
    "Kudos: Users may give one another Kudos on the forums for posts that they found particularly helpful or insightful."

  • Image Processing using applet

    hi,
    I am doing my project in java.My project is " Online Image Processing ".
    I did some processing like gray Scale, Invert , Contrast and rotate 90 degree.
    can any one help me for
    1. I vant to rotate Image to 1 degree...
    2. How to get Blure and Sharpen image?
    3. Can i append frames inside applet?
    plz Help me ..

    I did not read the content of the links (To lazy) just found them for you.
    You say that the examples use frames:
    this should not be a problem as the required code is the same.
    Tip:
    How whould you display a image in a frame?
    How whould you display a image in a applet?
    Concentrate on the above 2 and simply change the code accordingly.
    This should be easy also try asking google.

Maybe you are looking for

  • Is there anyone interesting in setting up an Arch Rollback Machine?

    Hello Archers, We developed the new Arch Rollback Machine (aka. A.R.M) and running the current A.R.M service api. Several days earlier we have a disk failed, replacing the disk and rebuilding RAID brings ~2 days downtime. We are sorry for any inconve

  • Exclude Managers and others in ECM Planning and Approval Iviews

    Hi All, In the planning iviews, we would like to restrict based one the following conditions, Manager -Level1 logs in and plans for 1) Employees directly reporting to him(includes managers of sub org units too) 2) And those who come under the sub org

  • Problème vidéo

    Bonjour ! Quand je filme avec l'app appareil photo, je n'ai pas de son, même chose pour FaceTime.  Pouvez-vous me guider pour savoir comment régler mon problème.  Je vous remercie !

  • Crashing Iphone 3gs Applications

    I was a proud owner of a 32GB Iphone 3GS until recently my iphone kept crashing on me. I could not open the downloaded applications. Even restoring it will only enable to run smoothly for a week(I have it restored several times since I bought it). He

  • One more: Win 7 won't run after Arch 64b install

    Hi, Just got a new 2 drive PC. Partitioned drives, and then installed as follows: 1. Win 7 (64b) on sda1 (+more NTFS partitions) 2. Arch 64b (fully updated) on sdb1-/boot and sdb2 -/. GRUB (NOT version 2) installed on sda. While Win 7 appears in the