使用三角函数和图像填充旋转图像

如何解决使用三角函数和图像填充旋转图像

在旋转具有三角函数的图像时,我们使用的是图像填充。

如果我们旋转而没有填充,我们将得到以下图片

enter image description here

如果我们填充图片, 例如,使用以下代码

`Padding_Bottom_And_Top = zeros(round(Image_Height/2),Image_Width,3);
Side_Padding = zeros(Image_Height+2*size(Padding_Bottom_And_Top,1),Image_Width/2,3);
Side_Padding =zeros(Image_Height+2*size(Padding_Bottom_And_Top,3);
Padded_Image = [Padding_Bottom_And_Top; Original_Image];
Padded_Image = [Padded_Image; Padding_Bottom_And_Top];
Padded_Image = [Side_Padding Padded_Image];
Padded_Image = [Padded_Image Side_Padding];`

我们有这张照片

enter image description here

首先,我想学习这段代码是如何工作的? 其次,我们使用图像填充实现了什么?

解决方法

图像填充

下面的这个操场脚本可能有助于将零填充置于透视图中。这里使用的填充是顶部和底部填充的图像高度的一半,而侧面填充的图像宽度的一半。本质上,填充是将零(黑色像素)的数组连接到图像的侧面。在这种情况下,它可以旋转图像而不会剪切图像。填充后的图像将具有一定的边距,以使转角在旋转时不会溢出图像的边界。使用padarray()函数可以获得相同的结果,这也是一种合适的方法。有关旋转的详细信息,请参见:Rotating image with trigonometric functions

使用padarray()函数的替代方法:

clf;
Original_Image = imread("peppers.png");
[Image_Height,Image_Width,Number_Of_Colour_Channels] = size(Original_Image);
Padded_Image = padarray(Original_Image,[Image_Height/2 Image_Width/2],'both');
imshow(Padded_Image);

Padding Image Example

游乐场脚本:

clf;
Original_Image = imread("peppers.png");
[Image_Height,Number_Of_Colour_Channels] = size(Original_Image);

Padding_Bottom_And_Top = zeros(round(Image_Height/2),Number_Of_Colour_Channels);
Side_Padding = zeros(Image_Height+2*size(Padding_Bottom_And_Top,1),Image_Width/2,Number_Of_Colour_Channels);

subplot(2,4,1); imshow(Padding_Bottom_And_Top);
title("Top and Bottom Padding");

subplot(2,2); imshow(Side_Padding);
title("Side Padding"); 

Padded_Image = [Padding_Bottom_And_Top; Original_Image];
subplot(2,5); imshow(Padded_Image);
title("Top Padding");

Padded_Image = [Padded_Image; Padding_Bottom_And_Top];
subplot(2,6); imshow(Padded_Image);
title("Top and Bottom Padding");


Padded_Image = [Side_Padding Padded_Image];
subplot(2,7); imshow(Padded_Image);
title("Top,Bottom and Left Padding");


Padded_Image = [Padded_Image Side_Padding];
subplot(2,8);imshow(Padded_Image);
title("Top,Bottom,Left and Right Padding");

使用MATLAB R2019b运行

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?