コード例 #1
0
def vec2display(vec):
    image2display(imgVec2image(vec))
コード例 #2
0
print(len(orth_basis.D[0]), len(orth_basis.D[1]))
print(len(centered_images[0].D))

print({
    key: distance_squared(orth_basis, image)
    for key, image in centered_images.items()
})

print('UNCLASIFIED')
raw_images_uncl = load_images('./unclassified', 10)
images_uncl = {
    key: list2vec([el for row in image for el in row])
    for key, image in raw_images_uncl.items()
}
centered_images_uncl = center_images(images_uncl, centroid)

dist = {
    key: distance_squared(orth_basis, image)
    for key, image in centered_images_uncl.items()
}
max = max(dist.values())
dist = {key: val * 100 / max for key, val in dist.items()}

print(dist)

print("Eigen Faces")

for i in range(10):
    projection = project(orth_basis, centered_images_uncl[i]) + centroid
    image2display(vec2image(projection, rowsCnt, colsCnt))
コード例 #3
0
ファイル: wavelets_lab.py プロジェクト: HatlessFox/SelfStudy
def find_threashold(fname, target_sparsity):
    haar_image = to_haar2d(read_image(fname))
    lo, hi = 0, 255
    while lo <= hi:
        th = (lo + hi) / 2
        non_zero_frac = sparsity2d(suppress2d(haar_image, th))
        if fabs(non_zero_frac - target_sparsity) <= 0.001:
            return th
        elif non_zero_frac < target_sparsity:
            hi = th - 1
        else:
            lo = th + 1
    return th if 0 < th else 0


def haar2d_compress_th(fname, threshold):
    img = to_haar2d(read_image(fname))
    print("Init sparcity: {:.2%}".format(sparsity2d(img)))
    compressed_haar = suppress2d(img, threshold)
    print("Apply th: {:4.2f} -> {:.2%}".format(threshold, sparsity2d(compressed_haar)))
    return image_round(from_haar2d(compressed_haar))


def haar2d_compress_sp(fname, sparsity):
    return haar2d_compress_th(fname, find_threashold(fname, sparsity))


if PRINT_FUNC_RUNS:
    image2display(haar2d_compress_sp("flag.png", 0.03))
コード例 #4
0
        >>> from matutil import listlist2mat
        >>> x = list2vec([1, 2, 3])
        >>> M = listlist2mat([[1, 0], [0, 1], [0, 0]])
        >>> project(M, x)
        Vec({0, 1, 2},{0: 1, 1: 2, 2: 0})
        >>> M = listlist2mat([[3/5, 0], [1/5, 2/3], [1/5, 1/3]])
        >>> project(M, x)
        Vec({0, 1, 2},{0: 0.96, 1: 1.8755555555555554, 2: 1.0977777777777777})
    '''
    return projected_representation(M, x) * M


## Task 11

face_0_project = project(orthonormal_basis, face_images[0])
face_5_project = project(orthonormal_basis, face_images[5])

# Have to translate vec to list of lists for image2display function
image2display(get_listlist_from_image_vec(face_0_project))
image2display(get_listlist_from_image_vec(face_5_project))

## Task 12

unclassified_0_project = project(orthonormal_basis, unclassified_images[0])
unclassified_1_project = project(orthonormal_basis, unclassified_images[1])
unclassified_6_project = project(orthonormal_basis, unclassified_images[6])

# Have to translate vec to list of lists for image2display function
image2display(get_listlist_from_image_vec(unclassified_0_project))
image2display(get_listlist_from_image_vec(unclassified_1_project))
image2display(get_listlist_from_image_vec(unclassified_6_project))
コード例 #5
0
    perpendicular = plen - x2
    return math.sqrt(perpendicular * perpendicular)


e_t = eigenfaces_basis.transpose()
classified_distances = [
    distance_squared(e_t, centered_image_vectors[x])
    for x in centered_image_vectors
]
print(classified_distances)

unclassified = import_faces('singular_value_decomposition/unclassified', 10)
# for k in unclassified:
#   vector = unclassified[k]
#   centered = vector - centroid
#   distance = distance_squared(e_t, centered)
#   print(distance)
#   image.image2display(vector2image(vector))


def project(M, x):
    return M * projected_representation(M, x)


image.image2display(vector2image(project(e_t, unclassified[1])))
image.image2display(vector2image(project(e_t, unclassified[2])))
image.image2display(vector2image(project(e_t, unclassified[3])))

# non-face
image.image2display(vector2image(project(e_t, unclassified[0])))
コード例 #6
0

assert (backward2d(forward2d([[1, 2, 3, 4]])) == [[4, 3, 2, 1]])


def import_flag():
    loaded = image.file2image('special_bases/flag.png')
    return image.color2gray(loaded)


def image_round(image):
    return [[abs(round(p)) if p < 255 else 255 for p in row] for row in image]


loaded = import_flag()
image.image2display(loaded)

wavelet = forward2d(loaded)
listlistrep = backward2d(wavelet)
rounded = image_round(listlistrep)

image.image2display(rounded)

compressed = suppress2d(wavelet, 2)
suppressed = 2
while sparsity2d(compressed) > 0.02:
    suppressed += 1
    compressed = suppress2d(wavelet, suppressed)
listlistrep = backward2d(compressed)
rounded = image_round(listlistrep)
image.image2display(rounded)
コード例 #7
0
ファイル: wavelet_lab.py プロジェクト: qq456cvb/matrix
def sparsity2d(D_dict):
    return sum([sum([1 if abs(D_dict[kn][km]) != 0 else 0 for km in D_dict[kn]]) for kn in D_dict]) / len(D_dict) / len(list(D_dict.values())[0])


def listdict2dict(L_dict, i):
    return dict((k, L_dict[k][i]) for k in L_dict)


def listdict2dictlist(listdict):
    return [listdict2dict(listdict, i) for i in range(len(list(listdict.values())[0]))]


def backward2d(dictdict):
    D_list = dict((k, backward(dictdict[k])) for k in dictdict)
    L_dict = listdict2dictlist(D_list)
    L_list = [backward(v) for v in L_dict]
    return L_list


def image_round(image):
    return [[min(255, abs(round(n))) for n in row] for row in image]

from image import file2image, color2gray, image2display
img = color2gray(file2image('Dali.png'))
# image2display(img)
wave_comp = forward2d(img)
wave_comp = suppress2d(wave_comp, 100)
print('sparsity is %f' % sparsity2d(wave_comp))
dump_img = image_round(backward2d(wave_comp))
image2display(dump_img)