Page 1 of 1

### Return histogram of image with pixel area 3x3 (4x4, 5x5, etc.)

Posted: 2019-12-04T07:27:18-07:00
Hello,
I think I understand how histogram works. It returns the color values of an image (e.g. RGB) and the amount of pixels of the same color value in the whole image. So far so good. Is there a way one could look up e.g. a 3x3 pixels area of the SAME color value and return only information of colors that at least are identical within such a 3x3 pixels area? This is to look for "flatness" of colors in an image.
Example attached:
This is a 9x9 pixel image. With the above approach using 3x3 pixel area the result would return 14x 255,0,0 | 0x 255,255,255 | 14x 0,255,0
If one would use 4x4 pixel area analysis the result would return 6x 255,0,0 | 0x 255,255,255 | 6x 0,255,0
https://www.dropbox.com/s/18xdtqv65xixm ... 1.png?dl=0

### Re: Return histogram of image with pixel area 3x3 (4x4, 5x5, etc.)

Posted: 2019-12-04T09:12:05-07:00
I'm not sure what you want.

In a 9x9 pixel image, there are nine 3x3 subimages that don't overlap, or forty-nine 3x3 subimages that do overlap.

However, in the red area, there are fourteen 3x3 subimages 3x3 subimages that do overlap. Is that what you mean?

A 3x3 subimage that is all one colour has a standard deviation of zero. The operation "-statistic standard-deviation 3x3" finds the SD for 3x3 subimages centred on all input pixels. You don't want the edge cases, so "-shave 1x1" will remove these, to give just the forty-nine cases.

### Re: Return histogram of image with pixel area 3x3 (4x4, 5x5, etc.)

Posted: 2019-12-04T11:07:30-07:00
Another method: "-scale" the image down, then back up. Pixels that have changed were not at the centre of solid-colour regions. Pixels that remain the same were at the centre of solid-colour regions.

Related techniques can be used, eg windowed means.

### Re: Return histogram of image with pixel area 3x3 (4x4, 5x5, etc.)

Posted: 2019-12-05T01:45:03-07:00
Hello,

thanks for your answers. I have tried -statistic with standard-deviation (or better: RMS). Unfortunately with larger files (I tried one with 5000x5000px) the computation is extremely slow and the output text file is understandably extremely large - I got 1.3GB text file which will be impossible to process afterwards. What options do I have to directly create a "new" histogram with this information instead?

PS: this is the command that I used

Code: Select all

``magick -verbose 3x3.tif -shave 1x1 -statistic RMS 3x3 3x3_out.txt``
PPS: the -scale approach is too destructive or too prone to rounding factors for the purpose I have in mind. I might miss valuable information that I can't recover anymore

### Re: Return histogram of image with pixel area 3x3 (4x4, 5x5, etc.)

Posted: 2019-12-05T08:25:10-07:00
I don't see how RMS helps.

The initial processing can be made massively faster using Integral images. I wouldn't process "txt:" of large images, as there is so much data and processing would take so long.

Can you link to a sample input file?

### Re: Return histogram of image with pixel area 3x3 (4x4, 5x5, etc.)

Posted: 2019-12-06T01:03:05-07:00
Hello,

I've used RMS to return the color values directly (not the deviation value which is 0,0,0 for zero deviation). The idea is to get information of a "new" histogram which prefers pixels of same colors within a certain neighborhood area (e.g. 3x3, 4x4, 5x5, etc.). In that sense the "new" histogram information would show a better statistic of colors that are really flat in a picture rather than just a "dumb" pixel count without association of location itself.
Of course, if there's a better approach, I'd be very happy to learn.

Here the link to one of the files:
https://www.dropbox.com/s/tcly5oyijlxns ... s.jpg?dl=0

So the "new" histogram would show many pixels using, especially the larger we'd go with the pixel area (e.g. 5x5 or even 10x10):
239,240,224
127,167,158
153,130,60
171,157,182
182,155,66
211,160,81
61,49,0
152,126,109
181,45,67