×

计算机视觉应用:完成批量化图像拼接

hqy hqy 发表于2025-03-01 23:03:18 浏览9 评论0百度已收录

抢沙发发表评论

😊😊😊欢迎来到本博客😊😊😊本次博客内容将继续讲解关于计算机视觉领域的相关知识🎉作者简介⭐️⭐️⭐️目前地学博士生在读。📝目前更新🌟🌟🌟目前已经更新了关于网络爬虫的相关知识、机器学习的相关知识、目前正在更新深度学习的相关内容。💛💛💛本文摘要💛💛💛

本文我们将根据计算机视觉相关知识完成批量化图像拼接操作

🌟提出问题

可能有好多同学在看到题目之后会觉得本篇博客是利用OPENCV中的SIFT、SURF或ORB等算法从图像中提取关键点和描述符进行特征匹配,然后拼接图像的操作。本文分享的和这个有一些差别,想要做的就是两个基本上不相关的图像进行拼接,具体如下:可以看出这两幅图像中有多余的白色区域,还有重复的图头区域,如果按照SIFT进行图像特征匹配然后完成拼接的化,肯定是图像的图头匹配度最高,然后图像重叠了,那就出现问题了。我们想要的是这两个图像要按照深度的顺序进行排序,将第二个图头去除,然后进行匹配。这个过程就有两个非常重要的点,一是去除白色边界;二是将第二个图头去除然后进行两个图像的拼接。

🌟去除白色边界

这里的思路是通过RGB图像转换为灰度图像,然后利用阈值将白色边缘部分卡掉。

image1 = cv2.imread(batch_files[0])if image1 isNone:print(f"无法读取图像: {batch_files[0]}")continue        gray1 = cv2.cvtColor(image1, cv2.COLOR_BGR2GRAY)        _, thresh1 = cv2.threshold(gray1,250,255, cv2.THRESH_BINARY_INV)        contours1, _ = cv2.findContours(thresh1, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)        x1, y1, w1, h1 = cv2.boundingRect(max(contours1, key=cv2.contourArea))        image1 = image1[y1:y1 + h1, x1:x1 + w1]

对应的代码块如上,首先对图像进行读取,如果没有顺利读取,那将显示无法读取图像。然后转换为灰度值,通过阈值分割的方法将白色区域找到,然后找到图像中的边缘信息,最后将图像进行提取。

🌟去除图头

这里我的思路是找到图像中图头固定的像素距离,然后去切除掉这部分图像。具体代码如下:

batch_result = image1# 遍历并处理剩余的图像forfilein batch_files[1:]:            image = cv2.imread(file)if image isNone:print(f"无法读取图像: {file}")continue            gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)            _, thresh = cv2.threshold(gray,250,255, cv2.THRESH_BINARY_INV)            contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)            x, y, w, h = cv2.boundingRect(max(contours, key=cv2.contourArea))            image = image[y:+ h, x:+ w]# 假设图头高度为固定值,这里假设为800像素,可根据实际情况调整            image = image[800:,:]# 检查图像宽度是否一致,如果不一致进行调整if batch_result.shape[1]!= image.shape[1]:# 这里简单地将图像缩放到和 result 相同的宽度                image = cv2.resize(image,(batch_result.shape[1], image.shape[0]))            batch_result = cv2.vconcat([batch_result, image])        batch_results.append(batch_result)

最终一个很重要的点就是保持所有的图像的宽度要一致,要不然会报错。

🌟效果展示

最终完成batch_size的图像拼接,然后效果如下:一点小技巧的分享!!!

🔎支持🎁🎁🎁谢谢各位支持!