Libraryless. Click here for Pure Java version (8105L/47K).
// Speed making histogram from BWImage: ~1 GPixels/s // Time to get median brightness: ~1us sclass BWImageHistogram { IBWImage image; // optional int[] data; // pixel count for each brightness from 0 to 255 int nPixels; // sum of pixel count int medianBrightness = -1; int medianSum; *(BufferedImage image) { this(BWImage(image)); } *(BWImage *image) { nPixels = area(image); data = bwImageHistogramArray(image); } toString { ret "BWImageHistogram of " + nPixels(nPixels) + (image == null ? "" : appendBracketed(str_px(image))); } int[] getArray() { ret data; } int medianSumTarget() { ret (nPixels+1)/2; } int medianBrightness() { if (medianBrightness < 0) { int threshold = medianSumTarget(), sum = 0; for i to 256: { sum += data[i]; if (sum > threshold) { medianBrightness = i; medianSum = sum; break; } } } ret medianBrightness; } // get pixel count for brightness int get(int brightness) { ret data[brightness]; } void printMedianStats() { int threshold = medianBrightness(); int prevSum = threshold == 0 ? 0 : medianSum-get(threshold-1); printVars(+threshold, +prevSum, target := medianSumTarget(), sum := medianSum); } }
download show line numbers debug dex old transpilations
Travelled to 4 computer(s): bhatertpkbcr, ekrmjmnbrukm, mowyntqkapby, mqqgnosmbjvj
No comments. add comment
| Snippet ID: | #1035045 |
| Snippet name: | BWImageHistogram - histogram of a BWImage |
| Eternal ID of this version: | #1035045/13 |
| Text MD5: | 5f420c49edd319dae93a96a263ddcb77 |
| Transpilation MD5: | 32ef3f8bef9a359048bfe7aa30408e1a |
| Author: | stefan |
| Category: | javax |
| Type: | JavaX fragment (include) |
| Public (visible to everyone): | Yes |
| Archived (hidden from active list): | No |
| Created/modified: | 2022-03-25 22:12:20 |
| Source code size: | 1349 bytes / 50 lines |
| Pitched / IR pitched: | No / No |
| Views / Downloads: | 585 / 735 |
| Version history: | 12 change(s) |
| Referenced in: | #1003674 - Standard Classes + Interfaces (LIVE continued in #1034167) |