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

在线营销单页网站制作怎么才能创个网站

在线营销单页网站制作,怎么才能创个网站,WordPress网络功能,网站建设 杭州市萧山区目录1.图像旋转的原理1.1.旋转矩阵1.2.双线性插值1.3.像素点匹配2.实现效果与说明1.图像旋转的原理 1.1.旋转矩阵 旋转一幅图像#xff08;假设这幅图像大小是矩形的#xff09;#xff0c;当然应该从像素点#xff08;pixels#xff09;开始#xff0c;在直角坐标系中… 目录1.图像旋转的原理1.1.旋转矩阵1.2.双线性插值1.3.像素点匹配2.实现效果与说明1.图像旋转的原理 1.1.旋转矩阵 旋转一幅图像假设这幅图像大小是矩形的当然应该从像素点pixels开始在直角坐标系中对点x0[a0b0]x_0\begin{bmatrix}a_0\\b_0\\ \end{bmatrix}x0​[a0​b0​​]逆时针旋转角度θ\thetaθ到x1[a1b1]x_1\begin{bmatrix}a_1\\b_1\\ \end{bmatrix}x1​[a1​b1​​]的变换公式为 x1[cosθ−sinθsinθcosθ]x0x_1\begin{bmatrix}cos\theta amp; -sin\theta \\ sin\theta amp; cos\theta\\ \end{bmatrix}x_0x1​[cosθsinθ​−sinθcosθ​]x0​ 那么对图像上的每个点调用这个旋转公式将旧图像像素点的RGB值搬移到新图像像素点就可以将图像旋转到任意位置。 但是问题来了显示屏的像素点是有限的这意味着显示在显示屏上的像素点坐标必须是整数旋转过后的图像的每个像素点坐标难免有非整数的情况那么这种情况下我们怎么处理呢 我们不妨假设逆时针旋转θ\thetaθ旋转后的图形上所有的像素点都是整点对于旋转后的图形的每个像素点x1x_1x1​求旋转前图形的对应像素点的坐标x0x_0x0​取ω−θ\omega-\thetaω−θ为逆旋转角度则旋转后的像素点和旋转前的像素点的对应关系为 x0[cosω−sinωsinωcosω]x1x_0\begin{bmatrix}cos\omega amp; -sin\omega \\ sin\omega amp; cos\omega\\ \end{bmatrix}x_1x0​[cosωsinω​−sinωcosω​]x1​ 此时x0x_0x0​不一定为整点x0x_0x0​的像素值需要做一定的近似。近似的方法有最近邻插值、双线性插值等等在这里我们就介绍比较实用且不是很复杂的双线性插值该插值方法不会产生明显失真现象。 对于像素点的旋转坐标函数编写如下 ①坐标旋转变换函数rot.m function yrot(p,angle) %p[x,y]为角度制 angleangle*pi/180;%角度制输入进行计算 y[cos(angle) -sin(angle);sin(angle) cos(angle)]*p; end1.2.双线性插值 对于x和y坐标非整数的非整点xpx_pxp​假设它周围的四个整点坐标分别为x11,x12,x21,x22x_{11},x_{12},x_{21},x_{22}x11​,x12​,x21​,x22​构成一个矩形。假设第一维度是x坐标第二维度是y坐标。则x11(1)x21(1)≤xp(1)≤x12(1)x22(1)x_{11}(1)x_{21}(1)≤x_p(1)≤x_{12}(1)x_{22}(1)x11​(1)x21​(1)≤xp​(1)≤x12​(1)x22​(1) x11(2)x12(2)≥xp(2)≥x21(2)x22(2)x_{11}(2)x_{12}(2)≥x_p(2)≥x_{21}(2)x_{22}(2)x11​(2)x12​(2)≥xp​(2)≥x21​(2)x22​(2) 显然即使xpx_pxp​为整点仍然存在这样的四个点x11,x12,x21,x22x_{11},x_{12},x_{21},x_{22}x11​,x12​,x21​,x22​使得上式成立。 在下图中P为非整点存在4个整点Q12,Q11,Q22,Q21Q_{12},Q_{11},Q_{22},Q_{21}Q12​,Q11​,Q22​,Q21​将P点包围在其中设纵向比例系数βy−y2y1−y2\color{blue}\beta\frac{y-y_2}{y_1-y_2}βy1​−y2​y−y2​​横向比例系数αx−x1x2−x1\color{blue}\alpha\frac{x-x_1}{x_2-x_1}αx2​−x1​x−x1​​颜色函数F(P)F(P)F(P)在四个整点处的值分比为F12,F11,F22,F21F_{12},F_{11},F_{22},F_{21}F12​,F11​,F22​,F21​则P点的函数值 FPβ[(1−α)F11αF21](1−β)[(1−α)F12αF22]F_P\beta[(1-\alpha)F_{11}\alpha F_{21}](1-\beta)[(1-\alpha)F_{12}\alpha F_{22}]FP​β[(1−α)F11​αF21​](1−β)[(1−α)F12​αF22​]写成矩阵的形式即为 FP[1−αα][F11F12F21F22][β1−β]F_P\begin{bmatrix}1-\alpha amp; \alpha \end{bmatrix}\begin{bmatrix} F_{11} amp; F_{12} \\[2ex] F_{21} amp; F_{22} \end{bmatrix}\begin{bmatrix}\beta \\[2ex] 1-\beta \end{bmatrix}FP​[1−α​α​][F11​F21​​F12​F22​​][β1−β​] 对于灰度图像F(P)F(P)F(P)是一维函数对于RGB图像F(P)[FR(P)FG(P)FB(P)]F(P)\begin{bmatrix}F_R(P) \\F_G(P) \\ F_B(P) \end{bmatrix}F(P)⎣⎡​FR​(P)FG​(P)FB​(P)​⎦⎤​ 由于该公式较为复杂可以单独编写双线性插值函数输入为一个任意点坐标和图像每个点的像素输出为该点进行双线性插值后的颜色函数值。但需要主要的是若给采集的4个周围整点有其中一个超出了图像边界考虑到图像边界一般为白色则以白色为替代。检测点是否在画布内只需要条件判断语句就够了。 ②检测是否在画布内的判断程序isinrect.m function yisinrect(plt,rect) if plt(1)rect(1) plt(1)rect(2) plt(2)rect(3) plt(2)rect(4)ytrue; elseyfalse; end③双线性插值函数linear_interp.m function ylinear_interp(p,img)%p为需要双线性插值的点坐标向量xp(1);yp(2);msize(img,1);nsize(img,2);x1floor(x);x2ceil(x);y1floor(y);y2ceil(y);%[x,y]四周的四个整点leftx-x1;%距左边线距离bottomy-y1;%距底线距离plt[x1,y2;x2,y2;x1,y2;x2,y2];img_rect[1,m,1,n];%原图像的矩形框pix_rectzeros(1,4,3);for t1:4if isinrect(plt(t,:),img_rect)for color1:3pix_rect(1,t,color)img(plt(t,1),plt(t,2),color);endelsepix_rect(1,t,:)255;%背景色为白色endendpixelszeros(1,3);%保存该点的三原色的三个像素pix_rectreshape(pix_rect,2,2,3);for color1:3pixels(color)[bottom,1-bottom]*pix_rect(:,:,color)*[1-left;left];%双线性像素插值endypixels; end1.3.像素点匹配 假设图像的点都是整点的情况下新图像是一个旋转后的矩形此时需要给新图像定界使得新图像能够包括在一个旋转角度为0°大矩形中。 leftmax(x1,x2,x3,x4),rightmin(x1,x2,x3,x4)leftmax(x_1,x_2,x_3,x_4),rightmin(x_1,x_2,x_3,x_4)leftmax(x1​,x2​,x3​,x4​),rightmin(x1​,x2​,x3​,x4​) topmax(y1,y2,y3,y4),bottommin(y1,y2,y3,y4)topmax(y_1,y_2,y_3,y_4),bottommin(y_1,y_2,y_3,y_4)topmax(y1​,y2​,y3​,y4​),bottommin(y1​,y2​,y3​,y4​) filename足球.bmp;%文件的完整路径名 imgimread(filename);%导入图像 % subplot(121) % imshow(img)%展示原图像 msize(img,1);nsize(img,2);%统计图像的长和宽 plt[0,0;m,0;m,n;0,n];%四个顶点坐标 for t1:4plt(t,:)ceil(rot(plt(t,:),rot_angle));%三个顶点进行旋转坐标变换 end %新的四个点坐标的x和y边界值 leftmin(plt(:,1));rightmax(plt(:,1)); bottommin(plt(:,2));topmax(plt(:,2)); Mright-left;Ntop-bottom;%获取新的图像大小 new_img255*ones(M,N,3);%创建新画布 leftmin(plt(:,1));rightmax(plt(:,1)); bottommin(plt(:,2));topmax(plt(:,2));定界完成后只需要求出新图像定界后每个像素点对应的原图像像素点坐标并按照双线性插值的方法取得像素值对应到新图像点中即可求出每个新图像点的像素值旋转步骤即完成。要注意的是如果双线性插值遇到了原图像界限外的点为保证程序不出错可以直接将界限外的点置为0相当于非常弱的边缘虚化效果或者直接将最外层边界整点进行最近邻插值这种分段算法实现会略微麻烦。主函数文件代码如下 ④主函数文件img_process.m function img_process(rot_angle) close all filename足球.bmp;%文件的完整路径名 imgimread(filename);%导入图像 figure imshow(img)%展示原图像 msize(img,1);nsize(img,2);%统计图像的长和宽 plt[0,0;m,0;m,n;0,n];%四个顶点坐标 for t1:4plt(t,:)ceil(rot(plt(t,:),rot_angle));%三个顶点进行旋转坐标变换 end %新的四个点坐标的x和y边界值 leftmin(plt(:,1));rightmax(plt(:,1)); bottommin(plt(:,2));topmax(plt(:,2)); Mright-left;Ntop-bottom;%获取新的图像大小 new_img255*ones(M,N,3);%创建新画布 for i1:Mfor j1:Ninit_pltrot([i-1left,j-1bottom],-rot_angle);%新图像对应原图像的坐标init_pltinit_plt1;%还原到Matlab坐标系new_img(i,j,:)linear_interp(init_plt,img);end end figure imshow(uint8(new_img))%展示旋转后的新图像底色为白色2.实现效果与说明 将上述标红的4个M文件放在一个文件夹并更改MATLAB目录为该文件夹并在该文件夹添加一张名为“足球.bmp”的位图文件在命令行输入img_process(30)即可将该图像旋转30°显示显示效果如下 原图像新图像旋转30° 本文从原理上用MATLAB代码实现了图像的旋转如果想直接调用MATLAB的函数请查看imrotate函数的相关说明 new_imgimrotate(initial_img,angle,method, ‘crop’) angle逆时针旋转的角度是角度值method该参数为插值方法其中’bilinear’为双线性插值可选crop旋转后增大图像
http://wiki.neutronadmin.com/news/133016/

相关文章:

  • 公司网站建设方案书用vultr做网站
  • 河北省城乡和建设厅网站wordpress卡蜜销售
  • 深圳网站建设有限公司 2019做网站如何计算工资
  • 网站开发应用开发有什么好的手机推荐网站
  • 公司网站开发背景海南行指三亚网站开发
  • 芦苞建网站公司看广告赚佣金平台
  • 重庆放心seo整站优化西宁网站建设哪家好
  • 白山网站设计广州黄埔网站建设
  • 合肥市建设通网站一个网站的seo优化有哪些
  • 信息网站方案wordpress从新安装
  • 网站开发博客做网站公司做网站公司
  • 建设网站困难的解决办法重庆妇科医院咨询
  • 广州市网站建设 骏域视频网站 建设 硬件
  • 一级a做爰电影片免费网站wordpress 产品列表页
  • 怎么修改wordpress站点代码做旅游景区网站
  • 白银网站建设硬件工程师培训机构哪家好
  • 国外手做网站wordpress加密原理
  • 企业案例网站最新淘宝客网站程序
  • 温州做网站哪家比较好pt网站怎么下载与做
  • 广州 网站制作 网站推广他达拉非片和西地那非片的区别
  • 公司注销的网站备案东莞网站哪家好
  • 做外掛网站空间网站建设指南
  • 仿制网站建设电子工程网稳压器教程
  • 莱山网站建设东莞seo整站优化火速
  • 移动应用开发公司网站模板贵州省遵义市建设局网站
  • 搭建网站步骤wordpress怎么启用sll证书
  • 学校网站建设管理制度班级网站素材下载
  • 手机网站开发教程视频查询企业的软件
  • 代做毕设网站做培训网站哪家好
  • 移动网站用什么建设网站 永久关停 请示