def runTexture(img_list): """ This function administrates the extraction of a video texture from the given frames. """ video_volume = assignment11.videoVolume(img_list) ssd_diff = assignment11.sumSquaredDifferences(video_volume) transition_diff = assignment11.transitionDifference(ssd_diff) alpha = 1.5*10**6 idxs = assignment11.findBiggestLoop(transition_diff, alpha) diff3 = np.zeros(transition_diff.shape, float) for i in range(transition_diff.shape[0]): for j in range(transition_diff.shape[1]): diff3[i,j] = alpha*(i-j) - transition_diff[i,j] return vizDifference(ssd_diff), \ vizDifference(transition_diff), \ vizDifference(diff3), \ assignment11.synthesizeLoop(video_volume, idxs[0]+2, idxs[1]+2)
def test_transitionDifference(): ssd1 = np.zeros((9,9), dtype = float) ssd1[4,4] = 1 ssd2 = np.eye(5, dtype = float) out1 = np.array([[0.0625, 0. , 0. , 0. , 0. ], [0. , 0.25, 0. , 0. , 0. ], [0. , 0. , 0.375, 0. , 0. ], [0. , 0. , 0. , 0.25, 0. ], [0. , 0. , 0. , 0. , 0.0625]], dtype = float) out2 = np.array([[1.]], dtype = float) for ssd, true_out in zip((ssd1, ssd2), (out1, out2)): print "Input:\n{}\n".format(ssd) usr_out = assignment11.transitionDifference(ssd) if type(usr_out) != type(true_out): print ("Error: transitionDifference output has type {}. " + "Expected type is {}.").format(type(usr_out), type(true_out)) return False if usr_out.shape != true_out.shape: print ("Error: transitionDifference output has shape {}. " + "Expected shape is {}.").format(usr_out.shape, true_out.shape) return False if usr_out.dtype != true_out.dtype: print ("Error: transitionDifference output has dtype {}. " + "Expected dtype is {}.").format(usr_out.dtype, true_out.dtype) return False if not np.all(np.abs(usr_out - true_out) < 0.10): print ("Error: transitionDifference output has value:\n{}\n" + "Expected value:\n{}").format(usr_out, true_out) return False print "Passed current input." print "transitionDifference passed." return True
def runTexture(img_list, alpha): """ This function administrates the extraction of a video texture from the given frames, and generates the three viewable difference matrices. """ video_volume = a11.videoVolume(img_list) ssd_diff = a11.computeSimilarityMetric(video_volume) transition_diff = a11.transitionDifference(ssd_diff) print "Alpha is {}".format(alpha) idxs = a11.findBiggestLoop(transition_diff, alpha) diff3 = np.zeros(transition_diff.shape, float) for i in range(transition_diff.shape[0]): for j in range(transition_diff.shape[1]): diff3[i, j] = alpha * (i - j) - transition_diff[i, j] return (vizDifference(ssd_diff), vizDifference(transition_diff), vizDifference(diff3), a11.synthesizeLoop(video_volume, idxs[0] + 2, idxs[1] + 2))