运行单应性传播街道图像插帧代码
这段代码是16年的一位大佬的paper上的, github地址,youtube上还有他的demo,现在试一下效果
准备
- visual studio
- boost windows库,必须于vs版本对应
- opencv windows库,必须于vs版本对应
- eigen windows库
- matlab
- 一份slic代码
- 一份配准代码,作者给出的链接为 PatchMatch, DAISY Filter Flow, NRDC
本次实验的环境
vs2017 bost1.75(最新) opencv2.4.13 eigen3.3.4
vs配置环境如下,请替换成自己的路径:
- vc++目录
- 调试->环境
- 链接器->输入->附加依赖项
修改代码
分为三部分,HomographyPropagation部分,NRDC部分以及slic部分
HomographyPropagation部分
- 修改Warp/triangle.c,替换long类型为__int64, 否则会报内存的错误,参考链接
- 修改main.cpp中work_dir_path的路径为自己的路径
- 选择nrdc_prepocessing.h的
define __BACKWARD 1
或者define __FORWARD 1
,保留一个,另一个注释 - 启动
- 正常输出如下,当第三步选择forward时会在
HomographyPropagation-master\data\viewinterp\1
产生输出,反之会在2产生输出
slic部分
slic.py代码为
import argparse
from skimage import io
import matplotlib.pyplot as plt
from skimage.segmentation import slic
from skimage.util import img_as_float
from skimage.segmentation import mark_boundaries
import numpy as np
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", required = True, help = "Path to the image")
args = vars(ap.parse_args())
image = img_as_float(io.imread(args["image"]))
# for numSegments in (100, 200, 300):
segments = slic(image, n_segments = 500, sigma = 5)
f = open('labels2.txt','w')
l = np.max(segments)
f.writelines('{} {} {} {}\n'.format(segments.shape[1],segments.shape[0],l+1,500))
for a in segments:
for b in a:
f.writelines('{}\n'.format(b))
io.imsave('test.jpg', mark_boundaries(image, segments))
# io.imsave('test.jpg', segments)
装好需要的库,然后python slic.py -i <image_path>
运行,很快就能得到结果,可以查看目录下的test.jpg
NRDC部分
下载官方的NRDC代码,matlab的,大致目录如下
打开nrdc_example.m文件,注释12~16行
对应位置加上这部分代码
fid = fopen('matches.txt','w+');
for i=1:size(Ref,2)
for j=1:size(Ref,1)
fprintf(fid,'%d %d %f %f %d\n',i,j,t(j,i,1)*size(Ref,2),t(j,i,2)*size(Ref,1),t(j,i,1)>0.1);
end
end
运行观察结果
运行步骤
- slic和NRDC分别生成label.txt和matches.txt,连同两张图片一起复制到
HomographyPropagation-master\data\forward
下,或者backward,取决于slic生成的是哪张图片,以及NRDC的Src_path
选择的图片,backward的时候两张图片需要互换 - 启动
HomographyPropagation-master\code
下的工程,注意修改好图片路径,在HomographyPropagation-master\data\viewinterp\1或2
得到结果 - backward,forward都做完后,打开
HomographyPropagation-master\code\multibandblending\script_demo.m
,运行,在HomographyPropagation-master\data\viewinterp\3
观察结果