def show_ori_image(gori, weights, patch, gradx=None, grady=None, gauss=None, fnum=None): """ python -m pyhesaff._pyhesaff --test-test_rot_invar --show --nocpp """ import plottool as pt if fnum is None: fnum = pt.next_fnum() print('gori.max = %r' % gori.max()) assert gori.max() <= TAU assert gori.min() >= 0 bgr_ori = pt.color_orimag(gori, weights, False, encoding='bgr') print('bgr_ori.max = %r' % bgr_ori.max()) #ut.embed() bgr_ori = (255 * bgr_ori).astype(np.uint8) print('bgr_ori.max = %r' % bgr_ori.max()) #bgr_ori = np.array(bgr_ori, dtype=np.uint8) legend = pt.make_ori_legend_img() #gorimag_, woff, hoff = vt.stack_images(bgr_ori, legend, vert=False, modifysize=True) import vtool as vt gorimag_, offsets, sftup = vt.stack_images(bgr_ori, legend, vert=False, modifysize=True, return_offset=True, return_sf=True) (woff, hoff) = offsets[1] if patch is None: pt.imshow(gorimag_, fnum=fnum) else: pt.imshow(gorimag_, fnum=fnum, pnum=(3, 1, 1), title='colored by orientation') #pt.imshow(patch, fnum=fnum, pnum=(2, 2, 1)) #gradx, grady = np.cos(gori + TAU / 4.0), np.sin(gori + TAU / 4.0) if gradx is not None and grady is not None: if weights is not None: gradx *= weights grady *= weights pt.imshow(np.array(gradx * 255, dtype=np.uint8), fnum=fnum, pnum=(3, 3, 4)) pt.imshow(np.array(grady * 255, dtype=np.uint8), fnum=fnum, pnum=(3, 3, 5)) #pt.imshow(bgr_ori, pnum=(2, 2, 4)) pt.draw_vector_field(gradx, grady, pnum=(3, 3, 6), invert=True) pt.imshow(patch, fnum=fnum, pnum=(3, 1, 3))
def TEST_figure1(wpatch, gradx, grady, gmag, gori, hist, centers): from plottool import draw_func2 as df2 import plottool import vtool.patch as ptool print('[rotinvar] 4) Draw histogram with interpolation annotations') fnum = 1 gorimag = plottool.color_orimag(gori, gmag, True) nRow, nCol = (2, 7) df2.figure(fnum=1, pnum=(nRow, 1, nRow), doclf=True, docla=True) plottool.draw_hist_subbin_maxima(hist, centers) df2.set_xlabel('grad orientation (radians)') df2.set_ylabel('grad magnitude') df2.set_title('dominant orientations') print('[rotinvar] 5) Show patch, gradients, magintude, and orientation') df2.imshow(wpatch, pnum=(nRow, nCol, 1), fnum=fnum, title='patch') df2.draw_vector_field(gradx, grady, pnum=(nRow, nCol, 2), fnum=fnum, title='gori (vec)') df2.imshow(gorimag, pnum=(nRow, nCol, 3), fnum=fnum, title='gori (col)') df2.imshow(np.abs(gradx), pnum=(nRow, nCol, 4), fnum=fnum, title='gradx') df2.imshow(np.abs(grady), pnum=(nRow, nCol, 5), fnum=fnum, title='grady') df2.imshow(gmag, pnum=(nRow, nCol, 6), fnum=fnum, title='gmag') gpatch = ptool.gaussian_patch(shape=gori.shape) df2.imshow(gpatch * 255, pnum=(nRow, nCol, 7), fnum=fnum, title='gauss weights', cmap_='hot') #gpatch3 = np.dstack((gpatch, gpatch, gpatch)) #df2.draw_vector_field(gradx * gpatch, grady * gpatch, pnum=(nRow, nCol, 8), fnum=fnum, title='gori (vec)') #df2.imshow(gorimag * gpatch3, pnum=(nRow, nCol, 9), fnum=fnum, title='gori (col)') #df2.imshow(gradx * gpatch, pnum=(nRow, nCol, 10), fnum=fnum, title='gradx') #df2.imshow(grady * gpatch, pnum=(nRow, nCol, 11), fnum=fnum, title='grady') #df2.imshow(gmag * gpatch, pnum=(nRow, nCol, 12), fnum=fnum, title='gmag') return locals()