利用计算机程序法 罗马一天内就可以“建成”
文章来源: civic 于
- 新闻取自各大新闻媒体,新闻内容并不代表本网立场!
750) this.width=750'
src=http://space.wenxuecity.com/gallery/others/2nhepty.jpg
onclick=document.location='http://pop.'>
人们站在不同的角度,将罗马城的方方面面拍下来,计算机通过对这些照片的分析与组合,可在一天内重“建”罗马
据《每日科学》网9月16日报道,美国研究人员发明了一种计算机程序法,利用数以千万计的罗马照片,在一天内就合成了罗马的三维图像,打破了“罗马不是一天建成的”神话。
俗话说,罗马古城不是一天建成的。建罗马斗兽场用了10年时间,建造圣彼得大教堂几乎用了一个世纪。但现在“建”这座城市,包括这些标志性建筑,可以在短短几个小时内被数字化“建成”。华盛顿大学开发了一种新的计算程序法,利用成千上万张照片,在一天内就合成了罗马的三维图像。
华盛顿大学研究人员利用网上大量的罗马城旅游照片,“重建”了整座罗马城。数字版的罗马由15万张旅游照片组成。计算机分析每一张照片,并将它们组合,创建一个三维数字模型,总共花了21个小时。通过这个模型,观众可以尽览罗马的所有标志性建筑,从特雷维喷泉到万神殿,再到西斯廷教堂内。
华盛顿大学计算机科学与工程学院的一名助理教授萨米尔·阿嘎沃尔(Sameer
Agarwal)将于今年10月的计算机视觉国际展览大会上展示这一模型,他说:“如何匹配这些大规模的图像是一大挑战”。这份报告的合著者之一,开发旅游摄影软件的康奈尔大学的助理教授诺亚斯内夫利(Noah
Snavely)说:“在旅游摄影技术和Photosynth软件的帮助下,我们基本上可以重建罗马城市的各个地标性建筑,从而重建整个城市”。
除了罗马,研究小组还重“建”了克罗地亚海滨城市杜布罗夫尼克,在不到23小时的时间内,350台电脑联网,利用了6万张照片;重建意大利威尼斯,在65小时内,500台电脑联网,利用了25万张图像。
阿嘎沃尔称,从地标建筑到城市,从数百张照片到数十万张照片,工作量越来越大。以前版本的旅游摄影软件要将每张照片与对应的景点相配,但随着照片增加,匹配工作也相应增加,25万张照片需要500台电脑花一年的时间去处理,100万张需要10年时间处理。现在新开发的软件使工作人员对照片的处理变得高效而准确,新版本比旧版本快100倍,匹配工作量减少了很多。新版本还使用并行处理技术,使其能够同时在多台计算机上运行,或通过因特网连接的远程服务器,同时进行匹配工作。新的,更快的软件使得有可能“建造”更为壮观的项目。
赛茨说:“现在,我们可以在一天时间内有条不紊地重“建”一座城市,并开始将它们的建设模式化。”
他还说:“这种技术能够为网民提供一个虚拟现实的网上地图查询体验,该软件还可以建立城市的自动视频游戏,它也可能是用于建筑的城市数字化保存,或与在线地图整合。”
该研究得到美国国家科学基金会,美国海军研究实验室、微软研究室和谷歌的大力支持
-->
`,
"script":[{"type":"text/javascript","src":"//widgets.outbrain.com/outbrain.js","async":"async"}]
}
, "gg_rightside": {
"html":`
`,
"script":[{"type":"text/javascript","src":"//widgets.outbrain.com/outbrain.js","async":"async"}]
}
, "gg_duturandom": {
"html":`
`,
"script":[]
}
, "gg_square": {
"html":`
`,
"script":[]
}
, "gg_topbanner": {
"html":`
`,
"script":[]
}
, "gg_middlesquare": {
"html":`
`,
"script":[]
}
, "gg_dutu": {
"html":`
`,
"script":[]
}
, "gg_botline": {
"html":``,
"script":[]
}
, "gg_dututop": {
"html":`
`,
"script":[]
}
, "gg_shipintop": {
"html":`
`,
"script":[]
}
, "gg_inContent": {
"html":`
`,
"script":[]
}
, "gg_shipinrandom": {
"html":``,
"script":[]
}
, "gg_sideSticky": {
"html":`
`,
"script":[]
}
, "gg_bottombanner": {
"html":`
`,
"script":[{"type":"text/javascript","src":"//widgets.outbrain.com/outbrain.js","async":"async"}]
}
, "gg_marquee": {
"html":`
`,
"script":[]
}
}
const adEnv={
"gg_header": {
"html":``,
"script":[{"type":"text/javascript","exec":` var googletag = googletag || {}; googletag.cmd = googletag.cmd || []; var pbjs = pbjs || {}; pbjs.que = pbjs.que || []; `},{"type":"text/javascript","src":"https://adncdnend.azureedge.net/adn-hb/adn.wnx2.js","async":""},{"type":"text/javascript","src":"https://adncdnend.azureedge.net/adn-video/WenxuecityPlayer.js","async":"async"}]
}
}
const wxcEnv = {
"base":{
"exe":[],
"src":[
{"src": "/news/js/recommendednews.js","defer":"true"},
{"src":"/js/wxcFunc.js","defer":"true"}
]
},
"func":{
"exe":[
//展示评论
'function showMoreComments(){let n = 0;for(let i=0;i
2){dom.hide();}}$("#showallcomment").show();$("#showlesscomment").hide();};',
],
"src":[
//图片,搜索,QR code
{"src": "/news/js/view.js?v=05132024"},
//计数器
{"src":"//count.wenxuecity.com/service/count/script/do.php?type=news&id=50353&n=0&out=jsval","defer":"true"},
]
}
}
function wxcCode(){
wxcEnv.base.exe.forEach(x=>{
let tag = buildAdcode(x);
document.head.append(tag);
})
wxcEnv.base.src.forEach(src => {
let tag = buildSrc(src)
document.head.append(tag);
});
wxcEnv.func.exe.forEach(x=>{
let tag = buildAdcode(x);
document.body.append(tag);
})
wxcEnv.func.src.forEach(src => {
let tag = buildSrc(src)
document.body.append(tag);
});
}
function adcode(){
let adkey = Object.keys(ads);
adkey.forEach(x=>{
let code = ads[x].html;
let div = document.getElementById(x);
if(div)div.innerHTML = code;
ads[x].script.forEach(s=>{
if(Object.keys(s).indexOf('src')===-1){
let tag = buildAdcode(s.exec);
document.body.append(tag);
}else{
let tag = buildSrc(s);
document.body.append(tag);
}
})
})
}
function baseCode(){
let baseKeys = Object.keys(adEnv);
baseKeys.forEach(x=>{
adEnv[x].script.forEach(s=>{
if(Object.keys(s).indexOf('src')===-1){
let tag = buildAdcode(s.exec);
document.head.append(tag);
}else{
let tag = buildSrc(s);
document.head.append(tag);
}
})
})
}
function buildAdcode(script){
let tag = document.createElement('script');
tag.innerHTML = script;
return tag;
}
function buildSrc(obj){
let keys = Object.keys(obj);
let tag = document.createElement("script");
keys.forEach(key=>{
tag.setAttribute(key, obj[key]);
})
return tag ;
}