Using the Equalis Advanced Image and Video Processing Module, I've tested the USB microscope for some simple job --> object detection and counting.
With the RGB image input (640 x 480), which is resized to half of during processing, the first test running in real-time, in which the original image and the binary image after processing is shown side by side.
The source code shown as below:
// 1. Loading Background Image which has been captured before this load('Background.sod'); // Background image saved in variable R R = imresize(R,0.5); // Resize to half for speed n = camopen(3,[640 480]); se = imcreatese('ellipse',12,12); // Creating Structure Element for Morphological operation // 2. Running for 200 frames, Frame rate not measured for cnt = 1:200 im = avireadframe(n); // Read a frame from USB Microscope im = imresize(im,0.5); // Resize image to half of the size drawlater(); S = rgb2gray(im); // Convert image to grayscale S_diff = imabsdiff(S,R); // Compare the image with the background image S_bin = im2bw(S_diff,imgraythresh(S_diff)); // Convert the difference image to binary S2 = imopen(S_bin,se); // Perform Imahe Opening [S3,nn] = imlabel(im2double(S2)); // Labelling image if nn ~= 0 then [Area, BB, ctr] = imblobprop(S3); // Find the object properties imshow([S im2uint8(S2)]); // Show image in cascade imrects(BB,[255 0 0]); // draw frame around detected objects xtitle('Detected Object : ' + string(nn)); else imshow([S im2uint8(S2)]); xtitle('Detected Object : ' + '0'); end drawnow(); end avicloseall(); |