Changeset 2119


Ignore:
Timestamp:
Dec 6, 2007, 11:45:38 PM (12 years ago)
Author:
Sam Hocevar
Message:
  • Added code for ranked dither. But deactivated it: it sucks heavily.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • www/study/study.py

    r2115 r2119  
    10351035sys.exit(0)
    10361036
     1037# XXX: test -- ranked dither -- it SUCKS
     1038def test26x(src, mat):
     1039    (w, h) = src.size()
     1040    dest = Image((w, h))
     1041    dx = len(mat[0])
     1042    dy = len(mat)
     1043    for y in range(h / dy):
     1044        for x in range(w / dx):
     1045            # Step 1: get the pixels and count groups
     1046            groups = {}
     1047            for j in range(dy):
     1048                for i in range(dx):
     1049                    p = src.getGray(x * dx + i, y * dy + j)
     1050                    if groups.has_key(p):
     1051                        groups[p].append((i, j))
     1052                    else:
     1053                        groups[p] = [(i, j)]
     1054            # Step 2: create the ranked dither
     1055            ranked = [[0] * dx for j in range(dy)]
     1056            for p, g in groups.items():
     1057                n = (int)(round(p * len(g)))
     1058                if not n:
     1059                    continue
     1060                v = [(mat[j][i], (i, j)) for (i, j) in g]
     1061                v.sort()
     1062                v = v[0 : n - 1]
     1063                for (k, (i, j)) in v:
     1064                    ranked[j][i] = 1
     1065            # Step 3: blit the ranked dither
     1066            for j in range(dy):
     1067                for i in range(dx):
     1068                    dest.setGray(x * dx + i, y * dy + j, ranked[j][i])
     1069    return dest
     1070
     1071if chapter(2):
     1072    #test26x(lenna256bw, DITHER_BAYER88).save("out2-6-1.png")
     1073    #test26x(gradient256bw, DITHER_BAYER88).save("grad2-6-1.png")
     1074    test26x(lenna256bw, DITHER_CLUSTER88).save("out2-6-1.png")
     1075    test26x(gradient256bw, DITHER_CLUSTER88).save("grad2-6-1.png")
     1076
Note: See TracChangeset for help on using the changeset viewer.