I'm trying to detect dirty floor areas in a series of images, using MATLAB and its Image Processing Toolbox, like the one that follows:
In the image above, there are two distinct areas, the whiter floor, which is considered clean, and the dirty floor, which is the area beyond the yellow warning sign. I'm looking for ways to detect these differences.
A relevant problem is that lighting intensity and colour may not be constant along the paths.
I've already tried 2D cross-correlation between a smaller sample image (taken from the image below), but it was not very effective.
My method was something like:
Mask out irrelevant features in input image (corridors other than the white ones, for example);
RGB to Grayscale conversion of input image (analysis target) and full sample image;
Extract a portion of the sample image and extract its histogram;
Use histogram equalization on input image, using the sample's histogram (histeq);
Run normxcorr2 between input and sample images;
Plot all points below an arbitrary constant (xCorr < 0.8, for example) over input image to detect "dirty" areas.
Maybe deep learning for image segmentation would be the most effective method, but I currently don't have the time to implement it.
Any other suggestions that would be any more effective on this situation?