利用快速傅里叶变换计算相关面

来源:网络整理 作者:佚名2017年11月27日 16:23
关键词:傅里叶变换
Fast Template Matching,J. P. Lewis
#-*- coding:utf-8 -*-
import numpy as np import matplotlib.pyplot as plt import cv2 from Integral_image import * ## read img ##### tm_path = ‘/home/wdh/pytorch-CycleGAN-and-pix2pix1_run/results/map_pix2pix/test_latest/real_B/1_AB_real_B.png’ ref_path = ‘/home/wdh/pytorch-CycleGAN-and-pix2pix1_run/results/map_pix2pix/test_latest/real_B/1_AB_real_B.png’ img_ref_bgr = cv2.imread(ref_path) img_tm_bgr = cv2.imread(tm_path) img_ref_gray = (cv2.cvtColor(img_ref_bgr,cv2.COLOR_BGR2GRAY))/np.float64(255.0) img_src_gray = (cv2.cvtColor(img_tm_bgr,cv2.COLOR_BGR2GRAY))/np.float64(255.0) [h_ref,w_ref] = img_ref_gray.shape [h_tm,w_tm] = img_src_gray.shape h_tm = int(h_tm/3) w_tm = int(w_tm/3) ex_raTIo = 0 img_tm_gray_ex = np.zeros([h_ref+h_tm*ex_raTIo,w_ref+w_tm*ex_raTIo]) img_tm_gray = np.copy(img_src_gray[h_tm:h_tm+h_tm,w_tm:w_tm+w_tm]) img_tm_gray_ex[0:h_tm,0:w_tm] = np.copy(img_src_gray[h_tm:h_tm+h_tm,w_tm:w_tm+w_tm]) tm_sum = np.sum(img_tm_gray_ex[0:h_tm,0:w_tm]) tm_sum_sq = np.sum(img_tm_gray_ex[0:h_tm,0:w_tm]*img_tm_gray_ex[0:h_tm,0:w_tm]) img_tm_gray_ex[0:h_tm,0:w_tm] = img_tm_gray_ex[0:h_tm,0:w_tm] - tm_sum/(h_tm*w_tm) #去均值 in_ref = calcIntag(img_ref_gray) in_ref_sq = calcIntag(img_ref_gray*img_ref_gray) img_ref_gray_ex = np.zeros([h_ref+h_tm*ex_raTIo,w_ref+w_tm*ex_ratio]) img_ref_gray_ex[0:h_ref,0:w_ref] = img_ref_gray[:,:] # img_ref_gray_ex[0:h_ref-h_tm+1,0:w_ref-h_tm+1] = img_ref_gray_ex[0:h_ref-h_tm+1,0:w_ref-h_tm+1] #- ref_avg_mat #去均值 #傅里叶变换 F_tm = np.fft.fft2(-img_tm_gray_ex) F_tm.real = -F_tm.real F_ref = np.fft.fft2(img_ref_gray_ex) F_w = F_tm * F_ref res = np.fft.ifft2(F_w).real#/((h_tm)*(w_tm)) res_i = np.fft.ifft2(F_w).imag print(res_i) bg_h = 0 bg_w = 0 ref_div_sq = calcDivmat2(in_ref_sq,in_ref, h_tm, w_tm) tm_div = tm_sum_sq - (1.0/(h_tm*w_tm))*tm_sum*tm_sum res = res[bg_h:bg_h+h_ref-h_tm+1,bg_w:bg_w+w_ref-w_tm+1]/(np.sqrt(ref_div_sq*tm_div)) print(np.max(res),np.min(res)) print(img_ref_gray.dtype,img_tm_gray.dtype) res2 = cv2.matchTemplate(np.float32(img_ref_gray),np.float32(img_tm_gray),method=5) print(np.max(res2),np.min(res2)) plt.figure() plt.subplot(221),plt.imshow(res,cmap=‘gray’) plt.subplot(222),plt.imshow(res2,cmap=‘gray’) plt.subplot(223),plt.imshow(in_ref,cmap=‘gray’) plt.subplot(224),plt.imshow(in_ref_sq,cmap=‘gray’) plt.show()
关注电子发烧友微信
有趣有料的资讯及技术干货
下载发烧友APP
打造属于您的人脉电子圈
关注发烧友课堂
锁定最新课程活动及技术直播
声明:电子发烧友网转载作品均尽可能注明出处,该作品所有人的一切权利均不因本站而转移。
作者如不同意转载,既请通知本站予以删除或改正。转载的作品可能在标题或内容上或许有所改动。
收藏 人收藏
分享:

相关阅读

发表评论
elecfans网友
分享到:

用户评论(0