- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想从由 8 个坐标点定义的图像中裁剪随机四边形并调整其大小:
(xtl, ytl), (xtr, ytr), (xbr, ybr), (xbl, ybl)
我有a code sample implementing the same crop and resize for a rectangle from an image, described by 4坐标 -
(x1,y1), (x2, y2)
我没有太多使用 C 语言,但我仍然可以理解代码在做什么,直到无法理解作者为什么要进行计算。具体来自上面要点中的第 53 行。
伪代码直到我理解:
涉及的变量:
float * image_data // float pointer to image data of original tensor shape- A = `<Batch X Channel X Height X Width>`
int batch_size // Batch value - for simplicity lets take single image A0= 1
int depth // Channel value from above shape for rgb A1= 3
int image_height // Height value from above shape A2= 128
int width // width value from above shape A3 = 128
即原始图像是3个128x128行x列的矩阵
float * boxes_data //float pointer to boxes coordinates in format B = `[y1,x1,y2,x2] X Number_of_Boxes`
int * box_index_data // can be ignored for our purpose B0= 0
int start_box // starting count of box B1 = 0
int limit_box // ending count of box B2 = 5000
也就是说,我们有一个包含 5000 个坐标(每 4 个)的列表,其中包含我们想要从原始图像中裁剪的矩形。
通过使用双线性插值来调整每个裁剪的大小以达到所需的裁剪尺寸。
float * corps_data //variable of all zeroes to hold final resized cropped pixels of shape - C = <5000*3*128*128> ie. 5000 matrices of original image size
int crop_height // height we wish to crop to C0 = 8 ie height of cropped box is 8 pixels
int crop_width // width we wish to crop to C1 = 64 ie height of cropped box is 64 pixels
float extrapolation_value // can be ignored for our purpose C2 = 0
对于简单情况,crop 始终大于 1,
height_scale =(框的高度)*(原始图像与裁剪尺寸之间的比例)
width_scale =(框的宽度)*(原始图像与裁剪尺寸之间的比例)
有人可以解释一下这里发生的事情吗?我必须循环选择部分的每个像素并填充临时像素,我必须插值是吗?
如何更改此函数以裁剪随机四边形并调整其大小?
更多阅读:
我理解其背后的理论,为了消除量化偏移,它们对等距像素进行采样,对于网格单元之间的像素值,它是使用双线性插值计算的。这些选定的值被平均池化以投影在统一大小的图层上。
实现文本对齐,如 this paper 所示
我想输入任意大小和方向的四边形,并将其映射到固定的网格大小,例如 128X128
的图像,我有两个四边形,其中一个很小,例如 ~20x20 (盒子)
和一个大的 ~80x100(盒子)
。我有他们的坐标。现在如何仅选择这些像素并将它们投影为统一尺寸,例如 64x64(裁剪)
。
最佳答案
您可以使用 OpenCV 库解决这个问题。
如果四边形是任意的(不是平行四边形) - 您需要透视变换(否则 - 更简单的仿射变换)
制作4对对应坐标:四边形顶点 - 所得矩形顶点
求透视变换矩阵:getPerspectiveTransform
使用此矩阵:warpPerspective 或 transform
关于c - 如何对四边形使用tensorflow.crop_and_resize(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53974575/
我是一名优秀的程序员,十分优秀!