Thank you for this video. I have question on training multiple images. For that do we need to concatenate the data to the df['Original Image'] column itself. Are there any changes needed while generating gabor features. Can you please let me know. Thanks in advance for the reply.
Hey Sreeni, your videos are quite knowledgable and productive for others. Just a quick question, can I use the Gabor filter for the detection of ROI regions from images. Suppose I have an image and the mask of the ROI region . Then I use Gabor to extract the features of that particular ROI region using the mask and train ML model. So, if a new image is coming, can I use that ML model to give me that particular ROI region? Its like object detection but in my dataset, the ROI instance does not vary. The only variation can be translation, scaling, rotation or affine.
Gabor is just a feature extractor, the exact application using gabor needs to be defined by you. In your example, you can use gabor from a small patch of your image to train a model (RF or SVM). But to find similar regions in other images you need to apply the trained model to entire image and then look at the probably map to find regions with high probability. But why go through all the exercise if template marching can do it easily?
@@DigitalSreeni I agree that template matching can do the trick. But template maching fails if the new image differs in translation, rotation, scaling, affine warping or shearing. I went through your non rigid transformation techniques as well. In the begining it seemed that dense flow is a good option but in my results dense flow is deforming the image after doing the registration. So if a new image has a different colour than reference image. The image is distorted or deformed after registration. But it works well with same color images.
I'm not able to read GeoTiff files using the code in this examble. I supose cv2.imread don't support GeoTiff files. I'm thinking to convert the GeoTiff image in an NumPy array with 3 dimensions... The cv2.filter2D convolute properly with NumPy arrays? Thank you
Almost every image processing library threads images as numpy array. Even if you use any library that reads images as other objects you have to convert them to numpy array for any processing. Therefore, if you manage to read your images as numpy array you can follow the process from this video and also other image processing operations. Geotiff is like regular tiff except it has metadata data embedded. You can use rasterio or georaster library to read those files.
Great again !! I have one more questions sorry... but really thanks you for your quick answer. I have some little grayscales images with homogeneous texture. Do you have a way for resume this gabor filters or others kernels into a single feature to be able to compares theses images? For example, I only use the median pixel value for regression analysis. Or in this case, is it preferable to use GLCM matrix for example?
What is your goal with this process? Are you trying to classify images based on their texture? If so, you can extract features and classify the entire image rather than segment each pixel. I plan on recording videos to use convolutional network outputs as inputs to Random Forest and I will make a video on classification.
@@DigitalSreeni I want to make a regression based on vegetations indices to predict an amount of nitrogen in this picture representing a field. But I think that adding a textural feature could improve the regression. But I need a single features of texture, but I don't know what kind of statistical feature use? How to sum up a gabor filter for example?
Very Informative tutorial. I want to extract Gabor feature from 1000 images and feed the features to CNN. How can I do that? I will appreciate any help.
Very Informative tuitorial. God bless you. if I want to extract gabor feature from 1000 images, where i need to modify in this code? I would appreciate any help. :)
Please watch my video 67 to learn how to apply a function to multiple images. In summary, you can put everything into a for loop and keep reading images and applying Gabor. Or, you can define a function for Gabor and apply it to each image that you read.
For hyperspectral images you can separate the channel you wish to send through feature extraction. You can use other channels as features during your training. I don't see any special tricks you need to apply, just identify the channel that requires feature extraction and apply Gabor (or other features).
Not sure what your exact question is, is it about displaying images and filters? In that case just plt.imshow() them. If it is about using the filters or machine learning please watch the follow up videos on my playlist.
Ground Launched Cruise Missile? :) Anyway, GLCM, I guess you mean grey-level co-occurrence matrix can also be used for texture based analysis but I find Gabor to be more efficient.
@@DigitalSreeni yeah okok, but I don't really understand how? Because the matrix comes from a pretty large windows ? So finally, is it applicable at every pixel? and how does it work on the border between two texture?
It does work for dicom images and I have used it. Since dicom format can be tricky you just need to find out how to read them into python. I’ve used Pydicom in the past.
@@DigitalSreeni Image in this format is corect read in python but I got this error: "img2 = cv2.cvtColor(ds, cv2.COLOR_BGR2GRAY) TypeError: src is not a numpy array, neither a scalar" where ds= dicom.dcmread('image-000001.dcm').
Great Tutorials! very clear, detailed and informative! Many thanks for putting those together. I'm learning a lot. Do you have any plans making a video about using HOG Feature Descriptor to train a model for object detection/classification?
Gabor is superior to HOG, in my view. If you can create feature banks with Gabor then I don't think you need HOG features anymore for machine learning. In summary, no I do not plan on talking about HOG.
One of the best tutorials i have ever seen... Good job and please keep the good work. Thanks
your videos are really good. the best in Gabor filters. thanks a lot.
Very instructive video, thank you very much
Thank you for this video.
I have question on training multiple images. For that do we need to concatenate the data to the df['Original Image'] column itself. Are there any changes needed while generating gabor features.
Can you please let me know. Thanks in advance for the reply.
Hey once the dataframe is created, what should we do to predict the best set of parameters?
What should i do for ultrasound images? What should be the parameters?
Hey Sreeni, your videos are quite knowledgable and productive for others. Just a quick question, can I use the Gabor filter for the detection of ROI regions from images. Suppose I have an image and the mask of the ROI region . Then I use Gabor to extract the features of that particular ROI region using the mask and train ML model. So, if a new image is coming, can I use that ML model to give me that particular ROI region?
Its like object detection but in my dataset, the ROI instance does not vary. The only variation can be translation, scaling, rotation or affine.
Gabor is just a feature extractor, the exact application using gabor needs to be defined by you. In your example, you can use gabor from a small patch of your image to train a model (RF or SVM). But to find similar regions in other images you need to apply the trained model to entire image and then look at the probably map to find regions with high probability. But why go through all the exercise if template marching can do it easily?
@@DigitalSreeni I agree that template matching can do the trick. But template maching fails if the new image differs in translation, rotation, scaling, affine warping or shearing.
I went through your non rigid transformation techniques as well. In the begining it seemed that dense flow is a good option but in my results dense flow is deforming the image after doing the registration. So if a new image has a different colour than reference image. The image is distorted or deformed after registration. But it works well with same color images.
I'm not able to read GeoTiff files using the code in this examble. I supose cv2.imread don't support GeoTiff files. I'm thinking to convert the GeoTiff image in an NumPy array with 3 dimensions... The cv2.filter2D convolute properly with NumPy arrays? Thank you
Almost every image processing library threads images as numpy array. Even if you use any library that reads images as other objects you have to convert them to numpy array for any processing. Therefore, if you manage to read your images as numpy array you can follow the process from this video and also other image processing operations. Geotiff is like regular tiff except it has metadata data embedded. You can use rasterio or georaster library to read those files.
Great again !! I have one more questions sorry... but really thanks you for your quick answer. I have some little grayscales images with homogeneous texture. Do you have a way for resume this gabor filters or others kernels into a single feature to be able to compares theses images? For example, I only use the median pixel value for regression analysis. Or in this case, is it preferable to use GLCM matrix for example?
What is your goal with this process? Are you trying to classify images based on their texture? If so, you can extract features and classify the entire image rather than segment each pixel. I plan on recording videos to use convolutional network outputs as inputs to Random Forest and I will make a video on classification.
@@DigitalSreeni I want to make a regression based on vegetations indices to predict an amount of nitrogen in this picture representing a field. But I think that adding a textural feature could improve the regression. But I need a single features of texture, but I don't know what kind of statistical feature use? How to sum up a gabor filter for example?
Very Informative tutorial. I want to extract Gabor feature from 1000 images and feed the features to CNN. How can I do that? I will appreciate any help.
Very Informative tuitorial. God bless you. if I want to extract gabor feature from 1000 images, where i need to modify in this code? I would appreciate any help. :)
Please watch my video 67 to learn how to apply a function to multiple images. In summary, you can put everything into a for loop and keep reading images and applying Gabor. Or, you can define a function for Gabor and apply it to each image that you read.
@@DigitalSreeni Thank you so much. Stay Safe
how to get feature vector
sir, would you help me how to define a hyperspectral image(Indian pines dataset CSV file) as an image in this Gabor filtering code?
For hyperspectral images you can separate the channel you wish to send through feature extraction. You can use other channels as features during your training. I don't see any special tricks you need to apply, just identify the channel that requires feature extraction and apply Gabor (or other features).
Hello, how to use gabor filter and PCA for dimensionality reduction opencv
I am not a big fan of PCA but if you want to know how to use it then you can just import it from sklearn:
from sklearn.decomposition import PCA
many thanks sir! good work!
You are welcome!
Can you please demonstrate how to show gabor filtered images with different orientations and wavelengths created in a filter bank?
Not sure what your exact question is, is it about displaying images and filters? In that case just plt.imshow() them. If it is about using the filters or machine learning please watch the follow up videos on my playlist.
Can we also use GLCM in the same way for image segmentation?
Ground Launched Cruise Missile? :)
Anyway, GLCM, I guess you mean grey-level co-occurrence matrix can also be used for texture based analysis but I find Gabor to be more efficient.
@@DigitalSreeni yeah okok, but I don't really understand how? Because the matrix comes from a pretty large windows ? So finally, is it applicable at every pixel? and how does it work on the border between two texture?
how to do it for 40 orientations
Instead of range(2) for theta, change it to define a specific range, for example range(0, 90, 2) changes theta from 0 to 90 in steps of 2.
Cant import getgaborkernal
Give me an error there is no getgaborkernal in cv2
How do it for dicom image? Becausse for these special images this code doesn't work for extract features :-(
It does work for dicom images and I have used it. Since dicom format can be tricky you just need to find out how to read them into python. I’ve used Pydicom in the past.
@@DigitalSreeni Image in this format is corect read in python but I got this error: "img2 = cv2.cvtColor(ds, cv2.COLOR_BGR2GRAY)
TypeError: src is not a numpy array, neither a scalar" where ds= dicom.dcmread('image-000001.dcm').
i think plt.subplot would be better to show the three images
Great Tutorials! very clear, detailed and informative! Many thanks for putting those together. I'm learning a lot.
Do you have any plans making a video about using HOG Feature Descriptor to train a model for object detection/classification?
Gabor is superior to HOG, in my view. If you can create feature banks with Gabor then I don't think you need HOG features anymore for machine learning. In summary, no I do not plan on talking about HOG.