Libraryless. Click here for Pure Java version (11272L/65K).
1 | persistable sclass G22GhostImage is IBWImage { |
2 | int w, h; |
3 | |
4 | public int getWidth() { ret w; } |
5 | public int getHeight() { ret h; } |
6 | |
7 | // number of images averaged |
8 | int imageCount; |
9 | |
10 | // array contains raw sum over images |
11 | // (1 for white pixel, 0 for black pixel) |
12 | int[] pixels; |
13 | |
14 | *(L<Image2B> maskImages) { |
15 | imageCount = l(maskImages); |
16 | if (imageCount == 0) ret; |
17 | var img = first(maskImages); |
18 | w = img.w(); h = img.h(); |
19 | pixels = sumOfBinaryImages(maskImages); |
20 | } |
21 | |
22 | public float getFloatPixel(int x, int y) { |
23 | ret imageCount == 0 ? 0.5f : floatRatio(pixels[y*w+x], imageCount); |
24 | } |
25 | |
26 | FloatBWImage toFloatBWImage() { |
27 | float[] floatPixels = new[pixels.length]; |
28 | if (imageCount == 0) |
29 | fillArray(floatPixels, 0.5f); |
30 | else |
31 | for i over pixels: |
32 | floatPixels[i] = floatRatio(pixels[i], imageCount); |
33 | ret new FloatBWImage(w, h, floatPixels); |
34 | } |
35 | |
36 | public BufferedImage getBufferedImage() { |
37 | ret toFloatBWImage().getBufferedImage(); |
38 | } |
39 | |
40 | FloatBWImage certaintyImage() { |
41 | ret preciseCertaintyImage(this); |
42 | } |
43 | |
44 | simplyCached double certainty() { |
45 | if (imageCount == 0) ret 0; |
46 | double sum = 0; |
47 | int n = pixels.length; |
48 | for i to n: |
49 | sum += g22pixelCertainty(doubleRatio(pixels[i], imageCount)); |
50 | ret sum/(w*h); |
51 | } |
52 | |
53 | G22GhostImage minus(G22GhostImage img) { |
54 | new G22GhostImage ghost; |
55 | ghost.w = w; ghost.h = h; |
56 | ghost.imageCount = imageCount-img.imageCount; |
57 | ghost.pixels = intArray_minus(pixels, img.pixels); |
58 | ret ghost; |
59 | } |
60 | } |
download show line numbers debug dex old transpilations
Travelled to 2 computer(s): elmgxqgtpvxh, mqqgnosmbjvj
No comments. add comment
Snippet ID: | #1035867 |
Snippet name: | G22GhostImage - average image of a number of masks |
Eternal ID of this version: | #1035867/13 |
Text MD5: | b9ee29b430c634f53079cabf89bc13ec |
Transpilation MD5: | a22f4ab591b92d0a78c2a150540a852f |
Author: | stefan |
Category: | javax / gazelle 22 |
Type: | JavaX fragment (include) |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2022-08-05 19:20:35 |
Source code size: | 1592 bytes / 60 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 175 / 310 |
Version history: | 12 change(s) |
Referenced in: | [show references] |