Hello. I have plenty of images, each one of them corresponds to a class. Knowing that I have 3 classes, I want to perform an image classification. I'm used to SVM and others, and I know how to perform the training and classification.
How do I proceed to the feature extraction from an image ?
Once you have the classified image, you essentially have a labeled image. 0 = background, a value of 1 = class 1, and so on. If you want all blobs of a certain class to be measured as a group, then just call regionprops.
groupMeasurements = regionprops(classifiedImage, 'all');
If you want each blob for a certain class to be measured by itself, then turn it into a binary image and then call regionprops:
binaryImage = classifiedImage == theClassNumberYouWant;
Then call regionprops:
individualBlobMeasurements = regionprops(binaryImage, 'all');
See my "BlobsDemo" for a more comprehensive tutorial: http://www.mathworks.com/matlabcentral/fileexchange/?term=authorid%3A31862
There are a bunch of different feature extraction approaches that are tied to what kind of images you have and the kind of problem you are attempting to solve. Here are some common feature descriptors you could extract: SURF features,MSER regions,FAST corners, Minimum Eigen Value corners and Harris corners.
Guess what, they are all in the Computer Vision System Toolbox!
Use the following functions to detect them:
and this function to extract them:
Did you see the help:
"points = detectFASTFeatures(I) returns a cornerPoints object, points. The object contains information about the feature points detected in a 2-D grayscale input image, I. "
You have a 3D image - a color image. The help says that it needs to be a 2D grayscale image. Either take one color channel
grayImage = x(:,:,2);
or a weighted average of the color channels:
grayImage = rgb2gray(x);
The first method is preferable.
Hello. This is an example of 3-D images I want to work on. This image described an electrical discharge. Basically, I want to make an image recognition system able to detect near occurring discharge (as in this image), or not.
When I take one color channel, by runing this command:
grayImage = x(:,:,2);
I obtain this image:
Here are some problems, First, the 2-D image obtained does not describe the electrical discharge. Second one, even if I run this cornerPoints of the 2-D image, it still not working. It displays this message again:
*>> points = detectFASTFeatures(grayImage)* Undefined function 'detectFASTFeatures' for input arguments of type 'uint8'.
Even if I use an image from matlab library, just like this:
*>> I = imread('cameraman.tif');* *>> corners = detectFASTFeatures(I);* Undefined function 'detectFASTFeatures' for input arguments of type 'uint8'.
Can you help me, please? I would really appreciate it! :)
Hello. As you requested, here are the images corresponding to no discharge, few discharges and a lot of discharges (before flash-over).
How can I extract features to detect those discharges? Thank you so much!
Hello Image Analyst, I think that the problem is bigger. I can't even execute the Matlab tutoriel for finding corners. http://www.mathworks.com/help/vision/ref/detectfastfeatures.html#btoe5z2-2
>> I = imread('cameraman.tif');
>> corners = detectFASTFeatures(I);
Undefined function 'detectFASTFeatures' for input arguments of type 'uint8'.
How can I get rid of this error? Thank you so much.