Find how smooth or rough a surface in an image is
Greetings all.
I am trying to determine from a given image how smooth or rough an object is. This could be a wall, garment, human skin, leather e.t.c. I would also like to determine if it is all one color or there are variations however minimal 'to the extent possible'.
I want then to assign a score say from 1 -10 1 being very smooth and similar color and 10 being rough and / or dotted with places of different hues.
I have an idea to use a smoothing filter. I would load two objects of the same image and smooth one a bit more 'heavily' that the other. I would then subtract the two images. I can imagine that if the image is very smooth, the result of the subtraction will be more or less zero, while for rough objects it will be a lot of noise.
I haven't tried it out yet and I don't know if it would work but it seems too 'simplistic'. Would anyone have a better idea on how this could be achieved? Especially the part of determining smoothness? I am assuming this process of determining smoothness will also give me areas with color disparity. Am I right? Is there a better way to do this?
As an example of an image I would process, see below. These are images of sections of a building walls.
Relatively Smooth Wall
Rough Wall