当前位置: 首页 > news >正文

html网站模板怎么用二手书籍交易网站开发方式

html网站模板怎么用,二手书籍交易网站开发方式,找网站公司做网站用了织梦可以吗,中国跨境电商出口平台这种拼接方法的假设前提是#xff1a;待拼接的两幅图像之间的变换模型是平移模型#xff0c;即两幅图像同名点位置之间只相差两个未知量#xff1a;ΔxΔx 和ΔyΔy#xff0c;自由度为2#xff0c;模型收得最紧。所以只有所有图像都是用同一水平线或者同一已知倾斜角的摄…这种拼接方法的假设前提是待拼接的两幅图像之间的变换模型是平移模型即两幅图像同名点位置之间只相差两个未知量ΔxΔx 和ΔyΔy自由度为2模型收得最紧。所以只有所有图像都是用同一水平线或者同一已知倾斜角的摄像机拍摄时这种方法才适用。  整个过程为首先对输入的两幅图像做柱面投影然后通过模板匹配求取ΔxΔx 和ΔyΔy最后采用渐入渐出的融合方式拼接两幅图像。 柱面投影 为了保证拼接后的视觉一致性所以需要将待拼接的图像分别投影到一个标准的坐标系下然后再进行图像拼接。由于柱面坐标的变换比较简单并且投影图像与其投影到圆柱表面的位置无关用其描述的柱面全景图像可在水平方向上满足360度环视具有较好的视觉效果所以可采用柱面投影完成图像拼接。  下面为柱面投影采用的公式x′x′和y′y′为柱面投影后的图像坐标xx和yy为图像原来的坐标widthwidth和heightheight为图像宽高ff为相机焦距我的理解是因为widthwidth和heightheight都是在图像坐标系下所以这个ff是相对于图像的我是根据图像大小以及视场角最做的估计。  x′f∗atan(x−0.5∗widthf)f∗atan(0.5∗widthf) x′f∗atan(x−0.5∗widthf)f∗atan(0.5∗widthf) y′f∗(y−0.5∗height)(x−0.5∗width)2f2−−−−−−−−−−−−−−−−−−√0.5∗height y′f∗(y−0.5∗height)(x−0.5∗width)2f20.5∗height 下面是柱面校正的代码事无巨细都是自己写的因为没有找到上述公式的反演公式直接正向插值了好在出来的效果还不错。 /**柱面投影函数  *参数列表中imgIn为输入图像f为焦距  *返回值为柱面投影后的图像 */ Mat cylinder(Mat imgIn, int f) {     int colNum, rowNum;     colNum 2 * f*atan(0.5*imgIn.cols / f);//柱面图像宽     rowNum 0.5*imgIn.rows*f / sqrt(pow(f, 2)) 0.5*imgIn.rows;//柱面图像高 Mat imgOut Mat::zeros(rowNum, colNum, CV_8UC1);     Mat_uchar im1(imgIn);     Mat_uchar im2(imgOut); //正向插值     int x1(0), y1(0);     for (int i 0; i imgIn.rows; i)         for (int j 0; j imgIn.cols; j)         {             x1 f*atan((j - 0.5*imgIn.cols) / f) f*atan(0.5*imgIn.cols / f);             y1 f*(i - 0.5*imgIn.rows) / sqrt(pow(j - 0.5*imgIn.cols, 2) pow(f, 2)) 0.5*imgIn.rows;             if (x1 0 x1 colNumy1 0 y1rowNum)             {                 im2(y1, x1) im1(i, j);             }         }     return imgOut; }   模板匹配 通过模板匹配的方法求取平移变换参数 /**求平移量  *参数表为输入两幅图像有一定重叠区域  *返回值为点类型存储x,y方向的偏移量 */ Point2i getOffset(Mat img, Mat img1) {     Mat templ(img1, Rect(0, 0.4*img1.rows, 0.2*img1.cols, 0.2*img1.rows));     Mat result(img.cols - templ.cols 1, img.rows - templ.rows 1, CV_8UC1);//result存放匹配位置信息     matchTemplate(img, templ, result, CV_TM_CCORR_NORMED);     normalize(result, result, 0, 1, NORM_MINMAX, -1, Mat());     double minVal; double maxVal; Point minLoc; Point maxLoc; Point matchLoc;     minMaxLoc(result, minVal, maxVal, minLoc, maxLoc, Mat());     matchLoc maxLoc;//获得最佳匹配位置     int dx matchLoc.x;     int dy matchLoc.y - 0.4*img1.rows;//右图像相对左图像的位移     Point2i a(dx, dy);     return a; }   线性融合 采用渐入渐出融合其实就是在重叠区域对两幅图像的像素线性地分配权值。公式imgd∗img1(1−d)∗img2imgd∗img1(1−d)∗img2其中img为融合后的图像img1和img2为待拼接的两幅图像。d为重叠区域中某个像素点到边界的距离。 /*渐入渐出拼接  *参数列表中img1,img2为待拼接的两幅图像a为偏移量  *返回值为拼接后的图像 */ Mat linearStitch(Mat img, Mat img1, Point2i a) {     int d img.cols - a.x;//过渡区宽度     int ms img.rows - abs(a.y);//拼接图行数     int ns img.cols a.x;//拼接图列数     Mat stitch Mat::zeros(ms, ns, CV_8UC1);     //拼接     Mat_uchar ims(stitch);     Mat_uchar im(img);     Mat_uchar im1(img1); if (a.y 0)     {         Mat roi1(stitch, Rect(0, 0, a.x, ms));         img(Range(a.y, img.rows), Range(0, a.x)).copyTo(roi1);         Mat roi2(stitch, Rect(img.cols, 0, a.x, ms));         img1(Range(0, ms), Range(d, img1.cols)).copyTo(roi2);         for (int i 0; i ms; i)             for (int j a.x; j img.cols; j)                 ims(i, j) uchar((img.cols - j) / float(d)*im(i a.y, j) (j - a.x) / float(d)*im1(i, j - a.x)); }     else     {         Mat roi1(stitch, Rect(0, 0, a.x, ms));         img(Range(0, ms), Range(0, a.x)).copyTo(roi1);         Mat roi2(stitch, Rect(img.cols, 0, a.x, ms));         img1(Range(-a.y, img.rows), Range(d, img1.cols)).copyTo(roi2);         for (int i 0; i ms; i)             for (int j a.x; j img.cols; j)                 ims(i, j) uchar((img.cols - j) / float(d)*im(i, j) (j - a.x) / float(d)*im1(i abs(a.y), j - a.x));     } return stitch; }   实验效果 写一个包含主函数的文件调用上述方法 #includeopencv2/highgui/highgui.hpp #includeopencv2/imgproc/imgproc.hpp #includeiostream #includetime.h int main() {     Mat img imread(frame1.jpg, 0);//左图像     Mat img1 imread(frame2.jpg, 0);//右图像     imshow(源图像-左, img);     imshow(源图像-右, img1);     double t (double)getTickCount();     //柱形投影     double t3 (double)getTickCount();     img cylinder(img,1000);     img1 cylinder(img1, 1000);     t3 ((double)getTickCount() - t3) / getTickFrequency();     //匹配     double t1 (double)getTickCount();     Point2i a getOffset(img, img1);     t1 ((double)getTickCount() - t1) / getTickFrequency();     //拼接     double t2 (double)getTickCount();     Mat stitch linearStitch(img, img1, a);     t2 ((double)getTickCount() - t2) / getTickFrequency();     t ((double)getTickCount() - t) / getTickFrequency(); cout 各阶段耗时 endl;     cout 柱面投影 t3 \n 模板匹配 t1 \n 渐入渐出拼接 t2 endl;     cout 总时间 t endl; imshow(柱面校正-左图像, img);     imshow(柱面校正-右图像, img1);     imshow(拼接结果, stitch);     imwrite(rectify.jpg, img);     imwrite(rectify1.jpg, img1);     imwrite(stitch.jpg, stitch);     waitKey(0);     return 0; }   首先读取两幅源图像  柱面投影之后  最后的拼接结果  拼接时间效率  测试环境为Intel(R) Core(TM) i3-2350M CPU 2.3GHzWin 10VS2013;源图像像素分辨率为640*480。  可以看出整体效果还行但细节很差比如重叠区域的墙上电线出现了重影。时间效率方面自己写的柱面投影函数耗时明显有待优化 ---------------------  作者czl389  来源CSDN  原文https://blog.csdn.net/czl389/article/details/54599253  版权声明本文为博主原创文章转载请附上博文链接
http://www.sadfv.cn/news/17360/

相关文章:

  • 网站开发绩效指标百度指数排名
  • 网站开发使用的软件广东网站设计公司价格
  • 公司网站报价网络营销产品策略的内容
  • 简述电子商务网站建设的主要步骤龙岗网站建设公司哪家口碑好
  • 杭州手机网站建设手机编程软件哪个好
  • 个人设计师网站建设银行网站打不开用什么浏览器
  • 自建网站做淘宝联盟长春网站建设产品展示
  • 部队网站怎么做营销网站建设与管理
  • 建筑企业网站ui培训怎么样
  • 网站毕设代做贵阳网站建设公
  • 四川省城乡住房建设厅网站新泰网页定制
  • 荆门网站建设514885南昌seo网站推广费用
  • 如何进入优容网站能免费观看所有电视剧的app
  • html5网站后台怎么做如何修改网站备案的域名
  • 肇庆企业做网站福州外文网站建设
  • 个人做网站需要学什么只是网站改版的几个建议
  • 深圳创意设计网站在线工具查看源代码
  • 昆明住房和城乡建设部网站wordpress建站 网盘视频教程
  • 信息技术网站建设专业建材网站设计
  • 个人模板建站网站的意义
  • 丹徒网站建设价格wordpress固定连接出现中文
  • 怎么做网站301转向wordpress使用视频教程
  • 做网站毕业设计存在的问题网上做网站怎么赚钱吗
  • 制作网站时搜索图标如何做wordpress 宣布停止
  • 广州网站优化公司咨询怎么在word里做网站
  • 通化县住房和城乡建设局网站福建龙岩昨天发生的新闻
  • 网站备案需要哪些东西免费网站可以做cpa
  • 洞头建设局网站网站付款链接怎么做的
  • .net 网站开发工程师东莞互联网大公司有哪些
  • 站长之家seo综合查询站酷网页设计分析