如何使用空间转换器在pytorch中裁剪图像?

     2023-03-29     164

关键词:

【中文标题】如何使用空间转换器在pytorch中裁剪图像?【英文标题】:How to use spatial transformer to crop the image in pytorch? 【发布时间】:2019-08-17 18:32:59 【问题描述】:

空间变换网络的论文声称它可以用来裁剪图像。

给定裁剪区域(top_left, bottom_right)=(x1,y1,x2,y2),如何将该区域解释为变换矩阵并在pytorch中裁剪图像?

这里有一个关于torch (http://torch.ch/blog/2015/09/07/spatial_transformers.html)中空间变换器网络的介绍,在介绍中,它可视化了transformer所看到的边界框,我们如何在给定变换矩阵的情况下确定边界框?

[编辑]

我刚刚找到第一个问题的答案【给定裁剪区域,找出一个变换矩阵】

【问题讨论】:

你看过这个教程吗? pytorch.org/tutorials/intermediate/… 是的。但是我不知道crop和stn之间的关系。如何在给定作物区域的情况下制定变换矩阵? 另外,官方教程中空间变换网络后的图像总是包含黑色区域。但它在我提供的教程链接中没有黑色区域 @alec.tu 黑色区域意味着您的转换超出了给定输出大小的范围。确保您在转换中使用的位置和比例在正确的范围内(例如,当输出大小减半时,转换为 -0.5 到 0.5) 【参考方案1】:

原帖中的图片已经提供了很好的答案,但提供一些代码可能会有用。

重要的是,此方法应正确保留渐变。在我的例子中,我有一批 y,x 值代表裁剪位置的中心(在 [-1,1] 范围内)。至于值ab,它们是转换的比例x 和y 值,在我的例子中,我使用0.5 结合较小的输出尺寸(宽度和高度的一半)来保留原始比例,即裁剪。您可以使用1 使比例没有变化,但这样就没有裁剪了。

import torch.nn.functional as F

def crop_to_affine_matrix(t):
    'Turns (N,2) translate values into (N,2,3) affine transformation matrix'
    t = t.reshape(-1,1,2,1).flip(2) # flip x,y order to y,x
    t = F.pad(t, (2,0,0,0)).squeeze(1)
    t[:,0,0] = a
    t[:,1,1] = b
    return t

t = torch.zeros(5,2) # center crop positions for batch size 5
F.affine_grid(crop_to_affine_matrix(t), outsize)

【讨论】:

在 PHP 中裁剪图像会留下黑色空间

...确定我在做什么不同。我对图像处理还不太了解,但是当使用imagecopyresampled将图像放置在另一个图像上时,裁剪图像似乎会在图像的右侧/底部添加大量黑色空间。它们都是JPEG。这是我的裁剪 查看详情

如何在angularjs中使用ng-file上传裁剪和上传图像

】如何在angularjs中使用ng-file上传裁剪和上传图像【英文标题】:Howtocropanduploadaimageusingng-fileuploadinangularjs【发布时间】:2015-12-0114:04:24【问题描述】:您好,我正在尝试裁剪图像并使用angularjs中的ng-file上传来上传图像。裁剪后... 查看详情

我想裁剪图像并输入在图像中查看。如何使用这种类型的裁剪从相机裁剪图像?

】我想裁剪图像并输入在图像中查看。如何使用这种类型的裁剪从相机裁剪图像?【英文标题】:Iwanttocropanimageandtypewasviewinimage.HowcanIcropanimagefromcamerausingthistypeofcropping?【发布时间】:2015-11-0310:17:01【问题描述】:如何裁剪图像... 查看详情

在 android lollipop 版本中使用意图进行图像裁剪时出现异常。如何在 5.0 以上版本中使用裁剪意图裁剪图像?

...在androidlollipop版本中使用意图进行图像裁剪时出现异常。如何在5.0以上版本中使用裁剪意图裁剪图像?【英文标题】:Gettingexceptionforimagecroppingusingintentinandroidlollipopversion.Howtocropanimageusingcropintentinabove5.0versions?【发布时间】:2015-... 查看详情

在 PHP 中使用 imagecopy 时如何使任何“额外空间”变白

】在PHP中使用imagecopy时如何使任何“额外空间”变白【英文标题】:Howtomakeany"extraspace"whitewhenusingimagecopyinPHP【发布时间】:2015-08-2223:39:59【问题描述】:我正在使用imagecopy将PNG图像裁剪为用户规范。目前,如果裁剪区域... 查看详情

如何使用 Imcrop 和 Matlab 保存空间参考

】如何使用Imcrop和Matlab保存空间参考【英文标题】:HowtopreservespatialreferenceusingImcropwithMatlab【发布时间】:2016-08-0620:35:29【问题描述】:我有一个图像和该图像的空间参考对象。现在我想根据空间参考对象通过坐标裁剪图像。Imcr... 查看详情

如何使用自定义裁剪布局在 android 中裁剪图像?

】如何使用自定义裁剪布局在android中裁剪图像?【英文标题】:HowcanIcropanimageinandroidwithcustomcroppinglayout?【发布时间】:2015-08-2516:36:46【问题描述】:我有一个活动,我获取图像并全屏显示,我想在图像上绘制一个600x600的矩形,... 查看详情

如何在 Opencv 中使用 CgRect 裁剪图像。

】如何在Opencv中使用CgRect裁剪图像。【英文标题】:HowtocropanImageusingCvRectinOpenCV.【发布时间】:2013-11-1012:31:48【问题描述】:我想裁剪1176*640的图像以保存1176*400大小的ROI。我正在使用以下sn-p来实现位我仍然将原始图像作为输出... 查看详情

如何在 Java 中裁剪图像?

】如何在Java中裁剪图像?【英文标题】:HowdoIcropanimageinJava?【发布时间】:2010-03-0510:43:00【问题描述】:我想使用鼠标手动裁剪图像。假设图像有一些文字,我想从图像中选择一些文字,然后为此,我想使用鼠标裁剪该区域。... 查看详情

如何在 laravel 中使用 spatie 包裁剪图像

】如何在laravel中使用spatie包裁剪图像【英文标题】:Howtocropimageusingspatiepackagesinlaravel【发布时间】:2020-09-1220:10:29【问题描述】:在遵循SpatieMediaLibrary中的文档后,我遇到了一个错误。文档说Internally,spatie/imageisusedtomanipulatetheima... 查看详情

如何在不使用内部相机裁剪的情况下裁剪图像

】如何在不使用内部相机裁剪的情况下裁剪图像【英文标题】:Howtocropanimagewithoutusinginternalcameracropping【发布时间】:2016-09-0604:15:38【问题描述】:我想在imageview中显示一个裁剪后的图像,该图像显示为预览,在显示为预览后,... 查看详情

如何在网站中动态裁剪/缩放图像

】如何在网站中动态裁剪/缩放图像【英文标题】:Howtodynamicallycrop/scaleimagesinawebsite【发布时间】:2012-02-2821:56:40【问题描述】:我需要我的网站能够根据浏览器上的视口调整和裁剪图像的大小。到目前为止,我已经设法使用图... 查看详情

您如何在 Rails 中使用载波“事后”裁剪图像?

】您如何在Rails中使用载波“事后”裁剪图像?【英文标题】:Howdoyoucropanimagewithcarrierwave\'afterthefact\'inrails?【发布时间】:2011-05-2208:21:23【问题描述】:我想做的是上传一张图片,然后将用户带到一个新页面,在那里我将使用Jcr... 查看详情

图像不占用datagridcell中的整个空间(代码片段)

...它显示一些图像文件的缩略图以及其他数据。我正在使用转换器裁剪图像的一部分,然后在Datagrid中显示裁剪的图像。这是网格的屏幕截图:图像显示正常,但它非常小。如果我使用鼠标更改列的宽度,则图像的宽度会发生变化... 查看详情

如何在 appcelerator 中裁剪图库图像?

】如何在appcelerator中裁剪图库图像?【英文标题】:Howtocropthegalleryimagesinappcelerator?【发布时间】:2016-01-2312:19:17【问题描述】:我正在开发iOS应用程序。因为我需要在从图库上传图像时裁剪图像。任何人都可以帮助我如何在ios... 查看详情

如何在 WPF 中的触摸屏上转换和裁剪图像?

】如何在WPF中的触摸屏上转换和裁剪图像?【英文标题】:HowtotransformandcropimageattouchpanelinWPF?【发布时间】:2020-12-1318:52:20【问题描述】:我正在尝试制作一些需要转换和裁剪以保存Image对象的图像。我尝试使用Image的IsManipulationE... 查看详情

如何在目标 c 中裁剪图像?

】如何在目标c中裁剪图像?【英文标题】:Howtocroptheimageinobjectivec?【发布时间】:2013-08-1309:41:48【问题描述】:用户可以更改在编辑屏幕中默认显示的裁剪框大小。我尝试使用以下代码:-(UIImage*)imageByCropping:(UIImage*)imageToCroptoRec... 查看详情

如何在 PyTorch 中显示单个图像?

】如何在PyTorch中显示单个图像?【英文标题】:HowdoIdisplayasingleimageinPyTorch?【发布时间】:2019-05-0612:01:55【问题描述】:我想显示使用ImageLoader加载并存储在PyTorchTensor中的单个图像。当我尝试通过plt.imshow(image)显示它时,我得到... 查看详情