# 图像拼接代码介绍
## 主入口
```python
matcher = Matcher(img1, img2, Method.SIFT)
matcher.match(show_match=True)
sticher = Sticher(img1, img2, matcher)
sticher.stich()
```
分为两部分,`Matcher`和`Sticher`,分别用作图像的内容识别及图像的拼接
## Matcher介绍
### 构造函数
```python
class Matcher():
def __init__(self, image1: np.ndarray, image2: np.ndarray, method: Enum=Method.SURF, threshold=800) -> None:
"""输入两幅图像,计算其特征值
Args:
image1 (np.ndarray): 图像一
image2 (np.ndarray): 图像二
method (Enum, optional): Defaults to Method.SURF. 特征值检测方法
threshold (int, optional): Defaults to 800. 特征值阈值
"""
...
```
此类用于输入两幅图像,计算其特征值,输入两幅图像分别为`numpy`数组格式的图像,其中的`method`参数要求输入SURF、SIFT或者ORB,`threshold`参数为特征值检测所需的阈值。
### 特征值计算
```python
def compute_keypoint(self) -> None:
"""计算特征点
Args:
image (np.ndarray): 图像
"""
...
```
利用给出的特征值检测方法对图像进行特征值检测。
### 匹配
```python
def match(self, max_match_lenth=20, threshold=0.04, show_match=False):
"""对图片进行匹配
max_match_lenth (int, optional): Defaults to 20. 最大匹配点数量
threshold (float, optional): Defaults to 0.04. 默认最大匹配距离差
show_match (bool, optional): Defaults to False. 是否展示匹配结果
"""
...
```
对两幅图片计算得出的特征值进行匹配,对ORB来说使用OpenCV的`BFMatcher`算法,而对于其他特征检测方法则使用`FlannBasedMatcher`算法。
## Sticher介绍
### 构造函数
```python
class Sticher:
def __init__(self, image1: np.ndarray, image2: np.ndarray, matcher: Matcher):
"""输入图像和匹配,对图像进行拼接
目前采用简单矩阵匹配和平均值拼合
Args:
image1 (np.ndarray): 图像一
image2 (np.ndarray): 图像二
matcher (Matcher): 匹配结果
"""
...
```
输入图像和匹配,对图像进行拼接,目前采用简单矩阵匹配和平均值拼合。
### 拼合
```python
def stich(self, show_result=True, show_match_point=True):
"""对图片进行拼合
show_result (bool, optional): Defaults to True. 是否展示拼合图像
show_match_point (bool, optional): Defaults to True. 是否展示拼合点
"""
...
```
对两幅图像进行拼合,采用透视变换矩阵,并利用平均值对图片进行无缝接合。
### 融合
```python
def blend(self, image1: np.ndarray, image2: np.ndarray) -> np.ndarray:
"""对图像进行拼合
Args:
image1 (np.ndarray): 图像一
image2 (np.ndarray): 图像二
Returns:
np.ndarray: 融合结果
"""
...
```
目前采用简单平均方式。
### 辅助函数
#### 平均值
```python
def average(self, image1: np.ndarray, image2: np.ndarray) -> np.ndarry:
"""平均算法拼合
Args:
image1 (np.ndarray): 图片一
image2 (np.ndarray): 图片二
Returns:
np.ndarray: 拼合后图像
"""
...
```
返回两幅图片的平均值。
#### 边界计算
```python
def get_transformed_size(self) ->Tuple[int, int, int, int]:
"""计算形变后的边界
Returns:
Tuple[int, int, int, int]: 分别为左右上下边界
"""
...
```
计算形变后的边界,从而对图片进行相应的位移,保证全部图像都出现在屏幕上。
#### 坐标变换
```python
def get_transformed_position(self, x: Union[float, Tuple[float, float]], y: float=None, M=None) -> Tuple[float, float]:
"""求得某点在变换矩阵(self.M)下的新坐标
Args:
x (Union[float, Tuple[float, float]]): x坐标或(x,y)坐标
y (float, optional): Defaults to None. y坐标,可无
M (np.ndarry, optional): Defaults to None. 利用M进行坐标变换运算
Returns:
Tuple[float, float]: 新坐标
"""
...
```
求得某点在变换矩阵(self.M)下的新坐标,如有选参数`M`,则利用M进行坐标变换运算。
没有合适的资源?快使用搜索试试~ 我知道了~
基于OpenCV的图像拼接系统
共77个文件
jpg:54个
py:8个
md:5个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 191 浏览量
2023-06-02
21:02:12
上传
评论 1
收藏 1.38MB ZIP 举报
温馨提示
基于OpenCV的图像拼接系统基于OpenCV的图像拼接系统基于OpenCV的图像拼接系统基于OpenCV的图像拼接系统基于OpenCV的图像拼接系统基于OpenCV的图像拼接系统基于OpenCV的图像拼接系统基于OpenCV的图像拼接系统基于OpenCV的图像拼接系统基于OpenCV的图像拼接系统基于OpenCV的图像拼接系统基于OpenCV的图像拼接系统基于OpenCV的图像拼接系统基于OpenCV的图像拼接系统基于OpenCV的图像拼接系统基于OpenCV的图像拼接系统基于OpenCV的图像拼接系统基于OpenCV的图像拼接系统基于OpenCV的图像拼接系统基于OpenCV的图像拼接系统基于OpenCV的图像拼接系统基于OpenCV的图像拼接系统基于OpenCV的图像拼接系统基于OpenCV的图像拼接系统基于OpenCV的图像拼接系统基于OpenCV的图像拼接系统基于OpenCV的图像拼接系统基于OpenCV的图像拼接系统基于OpenCV的图像拼接系统基于OpenCV的图像拼接系统基于OpenCV的图像拼接系统基于OpenCV的图像拼接系统基于OpenCV的图像拼接系统基于Ope
资源推荐
资源详情
资源评论
收起资源包目录
基于OpenCV的图像拼接系统.zip (77个子文件)
Image-stitcher
py
main.py 1KB
k_means.py 3KB
shrink_to_25.py 574B
stitch.py 20KB
thesis.py 5KB
README.html 81KB
thesis-evolution.txt 28KB
batch_stich.py 1KB
ransac.py 35KB
605thesis.txt 28KB
thesis.txt 409KB
blend.py 5KB
ransac_evolve.txt 11KB
README.md 4KB
docs
ransac解析
ransac解析.md 7KB
orb解析
img
BRIEF点对.png 183KB
keypoints.png 18KB
runtime.png 2KB
fast角点.png 45KB
descriptor.png 14KB
orb解析.md 9KB
TMGA
img
orig
NewHarbor-right.JPG 131B
Building-left.JPG 131B
Building-right.JPG 131B
Grass-left.JPG 131B
School-right.JPG 131B
Road-left.JPG 131B
Palace-left.JPG 131B
School-left.JPG 131B
Lake-right.JPG 131B
Lake-left.JPG 131B
NewHarbor-left.JPG 131B
Palace-right.JPG 131B
Tree-right.JPG 130B
Grass-right.JPG 131B
Road-right.JPG 131B
Tree-left.JPG 131B
result
Tree-ORB-TMGA.jpg 131B
Lake-ORB-RANSAC.jpg 131B
School-ORB-TMGA.jpg 132B
School-SIFT-RANSAC.jpg 132B
Palace-SIFT-TMGA.jpg 132B
NewHarbor-ORB-RANSAC.jpg 132B
NewHarbor-SIFT-TMGA.jpg 132B
NewHarbor-SIFT-RANSAC.jpg 132B
Road-SIFT-RANSAC.jpg 131B
Building-ORB-TMGA.jpg 132B
Palace-ORB-TMGA.jpg 132B
Grass-SIFT-RANSAC.jpg 132B
Palace-SIFT-RANSAC.jpg 132B
Tree-SIFT-RANSAC.jpg 131B
Lake-SIFT-RANSAC.jpg 131B
Tree-ORB-RANSAC.jpg 131B
School-SIFT-TMGA.jpg 132B
NewHarbor-ORB-TMGA.jpg 132B
Tree-SIFT-TMGA.jpg 131B
Road-ORB-TMGA.jpg 131B
Road-ORB-RANSAC.jpg 131B
Grass-ORB-RANSAC.jpg 132B
Building-SIFT-RANSAC.jpg 132B
Lake-ORB-TMGA.jpg 131B
Lake-SIFT-TMGA.jpg 131B
School-ORB-RANSAC.jpg 132B
Building-ORB-RANSAC.jpg 132B
Palace-ORB-RANSAC.jpg 132B
Grass-SIFT-TMGA.jpg 132B
Building-SIFT-TMGA.jpg 132B
Grass-ORB-TMGA.jpg 132B
Road-SIFT-TMGA.jpg 131B
index.md 7KB
example
3-left.JPG 195KB
3-surf.jpg 251KB
19-left.JPG 115KB
19-SIFT.jpg 146KB
19-right.JPG 112KB
3-right.JPG 208KB
README.md 2KB
共 77 条
- 1
资源评论
Java旅途
- 粉丝: 1w+
- 资源: 472
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于python的高性能爬虫程序,使用了多线程+缓存+xpath实现的,这里以彼-岸图库为例,实现,仅用于学习交流
- 中分辨率成像光谱仪(MODIS)烧毁面积产品信息MODIS-C6-BA-User-Guide-1.2.pdf
- Screenshot_20240427_172613_com.huawei.browser.jpg
- 关于学习Python的相关资源网站链接及相关介绍.docx
- (HAL库)基于STM32F103C8T6的温控PID系统[Dht11、ESP8266、无线透传、L298N……]
- VoLTE高丢包优化指导书.xlsx
- Rust资源文件.zip
- 前后端分离实践:使用 React 和 Express 搭建完整登录注册流程
- gradle-publish-to-MavenLocal.zip
- 10份网络优化创新案例.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功