Add image perspective editing and related tools
- Implemented the Image Perspective tool for editing image corners in Blender. - Created a new operator `EditImagePerspective` to handle the perspective transformation. - Added a preview feature for the perspective adjustment. - Introduced the `ImagePolylineTool` for editing image masks with polylines. - Developed backend support for Real-ESRGAN model inference, including ONNX integration. - Added functionality for image masking and background removal. - Created unit tests for the Real-ESRGAN ONNX model to ensure correct preprocessing and inference.
This commit is contained in:
@@ -1,85 +1,82 @@
|
||||
# Image Box、Lasso 与 Perspective
|
||||
# Image 编辑工具
|
||||
|
||||
这三个工具用于从 Image Empty 中提取局部图片。结果仍是 Image Empty,并自动 Pack 到 `.blend`。
|
||||
|
||||
它们只处理静态图片。视频和序列帧请使用其他转换工具。
|
||||
Image Box、Lasso、Line、Polyline 与 Perspective 直接编辑静态 Image Empty,并把结果 Pack 到当前 `.blend`。前四个工具组成 Mask 工具组;Perspective 是紧随其后的独立工具,Balloon Lasso 位于 Perspective 之后。
|
||||
|
||||
## 选择工具
|
||||
|
||||
| 工具 | 适合 |
|
||||
| 工具 | 用途 |
|
||||
| --- | --- |
|
||||
| **Image Box** | 提取矩形区域,操作最快 |
|
||||
| **Image Lasso** | 沿物体或不规则边界自由绘制 |
|
||||
| **Image Perspective** | 将海报、屏幕、门窗等四边形内容矫正为矩形 |
|
||||
| **Image Box** | 用矩形保留或清理图片区域 |
|
||||
| **Image Lasso** | 手绘自由选区 |
|
||||
| **Image Line** | 用一条直线清理一侧 |
|
||||
| **Image Polyline** | 逐点构建精确多边形 |
|
||||
| **Image Perspective** | 将任意顺序输入的四个角矫正为矩形 |
|
||||
|
||||
在 3D Viewport 左侧工具栏找到 Image 工具组。长按当前图标可以切换三个工具;设置位于 Tool Settings。
|
||||
在 3D Viewport 左侧工具栏长按 Image Mask 图标,可以在 Box、Lasso、Line 与 Polyline 之间切换。**Refine Selection** 只显示在 Box / Lasso;Line / Polyline 保持几何直线边界。Perspective 使用独立图标。
|
||||
|
||||
<div class="screenshot-placeholder" markdown>
|
||||
**截图占位:工具组与 Tool Settings**
|
||||
**截图占位:Image 工具组与 Tool Settings**
|
||||
|
||||
建议同时显示三个工具入口,以及 Remove Background、Continuous、Padding。
|
||||
显示包含四个工具的 Image Mask 组、独立 Perspective、Balloon Lasso,以及 Box / Lasso 的 Refine Selection。
|
||||
|
||||
目标文件:`images/image-tools/tool-group.png`
|
||||
</div>
|
||||
|
||||
## 选择源图片
|
||||
## 选择图片
|
||||
|
||||
如果当前 Active 已是目标图片,可以直接开始取区。
|
||||
直接在当前 Active 图片上开始绘制。如果第一次点击的是另一张 Image Empty,这次点击只会选中它;下一次操作才开始编辑。点击空白处或非图片对象时,继续编辑当前 Active 图片,不会移动对象。
|
||||
|
||||
如果要处理另一张图片,先点击它。这一次点击只负责选择;下一次点击或拖动才开始取区。点击空白处或其他类型的对象时,工具继续使用当前 Active 图片。
|
||||
没有 Active Image Empty 时,工具会提示先选择图片。切换到其他工具会立即取消正在进行的绘制。
|
||||
|
||||
!!! tip
|
||||
最简单的习惯是:先点一下目标图片确认 Active,再开始绘制。
|
||||
## 清理选区
|
||||
|
||||
## 使用 Box 或 Lasso
|
||||
### Box 与 Lasso
|
||||
|
||||
=== "Image Box"
|
||||
- Box:按住左键拖出矩形,松开后执行。
|
||||
- Lasso:按住左键绘制轮廓,松开后执行。
|
||||
|
||||
1. 按住左键,从区域一角拖到另一角。
|
||||
2. 松开左键,立即生成结果。
|
||||
### Line
|
||||
|
||||
=== "Image Lasso"
|
||||
从起点拖到终点,松开后保留直线左侧的内容。按住 `Ctrl` 以 5° 为单位吸附方向;需要另一侧时按 `F` 翻转。
|
||||
|
||||
1. 按住左键,沿需要保留的区域绘制。
|
||||
2. 松开左键,立即生成结果。
|
||||
### Polyline
|
||||
|
||||
选区可以越过图片边缘。只要范围内仍有可见像素,工具就会按实际内容裁切。
|
||||
逐点单击构建多边形。鼠标接近起点时会显示闭合圆环;单击圆环或按 `Enter` 完成,`Backspace` 删除最近一点。
|
||||
|
||||
绘制过程中按 `F` 切换反选。反选是一个持续到本次操作完成的状态,不需要按住:
|
||||
|
||||
- 关闭:保留选区内;
|
||||
- 开启:保留选区外。
|
||||
|
||||
Box / Lasso 启用 **Refine Selection** 后,BEN2 会先把几何选区收紧到其中的前景,再应用反选。例如框住一个苹果并开启反选,最终会清理苹果本身、保留其余内容。Line / Polyline 不提供 Refine,以保持直线边界和明确的裁切方向。
|
||||
|
||||
结果会直接替换当前 Empty 的图片,并把画布紧裁切到最终可见 Alpha。对象 Transform 不变,显示尺寸与 Image Offset 会更新,使剩余像素保持在原图片平面上的位置。透明区只修改 Alpha,保留源 RGB 供纹理过滤使用;完全透明的结果不会写入。
|
||||
|
||||
<div class="screenshot-placeholder" markdown>
|
||||
**截图占位:Box 与 Lasso 取区**
|
||||
**截图占位:Polyline 与反选**
|
||||
|
||||
建议用一张并排图展示矩形拖拽和自由轮廓,不需要额外结果图。
|
||||
显示半透明选区面、虚线边界,以及状态栏中的 `F toggles Invert`。
|
||||
|
||||
目标文件:`images/image-tools/box-lasso.png`
|
||||
目标文件:`images/image-tools/polyline-invert.png`
|
||||
</div>
|
||||
|
||||
## 使用 Perspective
|
||||
## 四点透视
|
||||
|
||||
1. 依次点击内容的四个角,顺序不限。
|
||||
2. 第四点完成后,Viewport 中央会显示矫正预览。
|
||||
3. 左右移动鼠标调整宽高比。
|
||||
4. 单击左键确认并生成结果。
|
||||
1. 任意顺序单击四个角点。
|
||||
2. 第四点后,在 Viewport 中央检查矫正预览。
|
||||
3. 左右移动鼠标调整宽高比;按住 `Ctrl` 可吸附到 `1:1`、`4:3`、`3:4`、`16:9`、`9:16`。
|
||||
4. 左键确认。
|
||||
|
||||
调整比例时按住 `Ctrl`,可以吸附到 `1:1`、`4:3`、`3:4`、`16:9` 和 `9:16`。`Backspace` 返回上一个角点;右键或 `Esc` 取消。
|
||||
`Backspace` 返回上一步,右键或 `Esc` 取消。四点会自动排序,点击顺序不会改变输出旋转。
|
||||
|
||||
Perspective 只执行图片 Homography 与紧裁切,不做 Refine,也不尝试从当前 View 推导真实相机。结果保持源 Empty 的 Transform,并按原四边形覆盖范围近似更新显示位置与尺寸。选区完全位于图片外或没有可见像素时不会执行。
|
||||
|
||||
<div class="screenshot-placeholder" markdown>
|
||||
**截图占位:Perspective 比例确认**
|
||||
|
||||
建议截取中央图片预览、蓝色边框、比例文字和底部操作提示。
|
||||
显示中央图片预览、蓝色边框、当前比例与底部操作提示。
|
||||
|
||||
目标文件:`images/image-tools/perspective-aspect.png`
|
||||
</div>
|
||||
|
||||
## 结果设置
|
||||
|
||||
- **Remove Background**:使用 BEN2 删除选区内的背景,再按可见内容裁切。首次使用需要先完成 AI Environment 与 BEN2 配置。
|
||||
- **Continuous**:保留源图片,连续创建新结果。新图片会向当前 View 稍微靠近,减少重叠闪烁。
|
||||
- **Padding**:在可见内容四周增加透明像素,单位为 px。
|
||||
|
||||
Continuous 关闭时,结果会原位替换当前 Image Empty;开启时,源图片保持 Active,便于继续提取其他区域。
|
||||
|
||||
## Perspective 的结果位置
|
||||
|
||||
Perspective 会矫正图片内容,但不会尝试还原真实相机或空间平面。结果沿用源图片的朝向和深度,并大致放在原四边形覆盖的区域。
|
||||
|
||||
需要了解交互状态、像素处理和模块职责时,请阅读 [Image 工具技术实现](image-tools-technical.md)。
|
||||
实现结构与像素规则见 [Image 工具技术实现](image-tools-technical.md)。
|
||||
|
||||
Reference in New Issue
Block a user