色婷婷AV无码久久精品,久久天天躁狠狠躁夜夜97,羞羞麻豆国产精品1区2区3区,啪影院免费线观看视频,思思久久er99精品亚洲

常州機器視覺培訓

常州上位機軟件開發(fā)

常州工業(yè)機器人編程設計培訓

常州PLC培訓

常州PLC

常州PLC編程培訓

常州電工培訓

常州和訊plc培訓中心歡迎您!
當前位置:網(wǎng)站首頁 > 新聞中心 新聞中心
使用Python進行二維圖像的三維重建(下)-常州機器視覺培訓,常州上位機培訓
日期:2023-12-18 16:04:15人氣:  標簽:常州機器視覺培訓 常州上位機培訓

 

結(jié)果比較

# importing the libraries

import matplotlib.pyplot as plt

from mpl_toolkits.mplot3d import Axes3D


# Create a figure with two subplots

fig, axs = plt.subplots(1, 2, figsize=(10, 5))

# Visualize the original image in the first subplot

axs9.jpg.imshow(images9.jpg, cmap='gray')

axs9.jpg.axis('off')

axs9.jpg.set_title('Original')

# Visualize the reconstructed mesh in the second subplot

ax = fig.add_subplot(1, 2, 2, projection='3d')

ax.plot_trisurf(verts[:, 0], verts[:, 1], verts[:, 2], triangles=faces)

ax.set_title('Reconstructed')

# Show the figure

plt.show()

9.jpg

解釋:在此代碼中,使用matplotlib創(chuàng)建了包含兩個子圖的圖形。在第一個圖中,顯示了來自數(shù)據(jù)集的原始圖像。在第二個圖中,使用3D三角形表面圖可視化了重建的3D網(wǎng)格。


方法2


以下是執(zhí)行來自TempleRing數(shù)據(jù)集圖像的3D重建的另一個示例代碼:


引入模塊:


import cv2

import numpy as np

import matplotlib.pyplot as plt

from google.colab.patches import cv2_imshow

加載兩個Temple Ring數(shù)據(jù)集圖像:


# Load the PNG images (replace with your actual file paths)

image1 = cv2.imread('/content/drive/MyDrive/templeRing/templeR0001.png')

image2 = cv2.imread('/content/drive/MyDrive/templeRing/templeR0002.png'

解釋:該代碼使用OpenCV的cv2.imread函數(shù)從TempleRing數(shù)據(jù)集加載兩個圖像。


轉(zhuǎn)換為灰度圖:


# Convert images to grayscale

gray1 = cv2.cvtColor(image1, cv2.COLOR_BGR2GRAY)

gray2 = cv2.cvtColor(image2, cv2.COLOR_BGR2GRAY)


該代碼使用OpenCV將兩個圖像轉(zhuǎn)換為灰度圖像。它們以單通道表示,其中每個像素的值表示其強度,并且沒有顏色通道。


查找SIFT關(guān)鍵點和描述符:


# Initialize the SIFT detector

sift = cv2.SIFT_create()


# Detect keypoints and compute descriptors for both images

kp1, des1 = sift.detectAndCompute(gray1, None)

kp2, des2 = sift.detectAndCompute(gray2, None)


該代碼使用尺度不變特征變換(SIFT)算法在兩個圖像中查找關(guān)鍵點和描述符。它使用OpenCV的cv2.SIFT_create()函數(shù)創(chuàng)建一個SIFT對象,并調(diào)用其detectAndCompute方法來計算關(guān)鍵點和描述符。


使用FLANN匹配器匹配描述符:


# Create a FLANN-based Matcher object

flann = cv2.FlannBasedMatcher({'algorithm': 0, 'trees': 5}, {})


# Match the descriptors using KNN (k-nearest neighbors)

matches = flann.knnMatch(des1, des2, k=2)


解釋:該代碼使用Fast Library for Approximate Nearest Neighbors(FLANN)匹配器對描述符進行匹配。它使用OpenCV的cv2.FlannBasedMatcher函數(shù)創(chuàng)建FLANN匹配器對象,并調(diào)用其knnMatch方法來找到每個描述符的k個最近鄰。


使用Lowe的比率測試篩選出好的匹配項


# Apply Lowe's ratio test to select good matches

good_matches = []

for m, n in matches:

    if m.distance < 0.7 * n.distance:

        good_matches.append(m)


解釋:該代碼使用Lowe的比率測試篩選出好的匹配項。它使用最近鄰和次近鄰之間距離比的閾值來確定匹配是否良好。


提取匹配的關(guān)鍵點


# Extract matched keypoints

src_pts = np.float32(

    [kp1[m.queryIdx].pt for m in good_matches]).reshape(-1, 1, 2)

dst_pts = np.float32(

    [kp2[m.trainIdx].pt for m in good_matches]).reshape(-1, 1, 2)


解釋:該代碼從兩組關(guān)鍵點中提取匹配的關(guān)鍵點,這些關(guān)鍵點將用于估算對齊兩個圖像的變換。這些關(guān)鍵點的坐標存儲在'src_pts'和'dst_pts'中。


使用RANSAC找到單應矩陣


# Find the homography matrix using RANSAC

H, _ = cv2.findHomography(src_pts, dst_pts, cv2.RANSAC, 5.0)


在這段代碼中,它使用RANSAC算法基于匹配的關(guān)鍵點計算描述兩個圖像之間的變換的單應矩陣。單應矩陣后來可以用于拉伸或變換一個圖像,使其與另一個圖像對齊。


使用單應矩陣將第一個圖像進行變換


# Perform perspective transformation to warp image1 onto image2

height, width = image2.shape[:2]

result = cv2.warpPerspective(image1, H, (width, height))

# Display the result

cv2_imshow(result)

10.jpg

解釋:該代碼使用單應矩陣和OpenCV的cv2.warpPerspective函數(shù)將第一個圖像進行變換。它指定輸出圖像的大小足夠大,可以容納兩個圖像,然后呈現(xiàn)結(jié)果圖像。


顯示原始圖像和重建圖像


# Display the original images and the reconstructed image side by side

fig, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(12, 4))

ax1.imshow(cv2.cvtColor(image1, cv2.COLOR_BGR2RGB))

ax1.set_title('Image 1')

ax1.axis('off')

ax2.imshow(cv2.cvtColor(image2, cv2.COLOR_BGR2RGB))

ax2.set_title('Image 2')

ax2.axis('off')

ax3.imshow(cv2.cvtColor(result, cv2.COLOR_BGR2RGB))

ax3.set_title('Reconstructed Image')

ax3.axis('off')

plt.show()

輸出:

11.jpg

解釋:這段代碼展示了在一個具有三個子圖的單一圖形中可視化原始圖像和重建圖像的過程。它使用matplotlib庫顯示圖像,并為每個子圖設置標題和軸屬性。


不同的可能方法


有許多不同的方法和算法可用于從2D圖像執(zhí)行3D重建。選擇的方法取決于諸如輸入圖像的質(zhì)量、攝像機校準信息的可用性以及重建的期望準確性和速度等因素。


一些常見的從2D圖像執(zhí)行3D重建的方法包括立體對應、運動結(jié)構(gòu)和多視圖立體。每種方法都有其優(yōu)點和缺點,對于特定應用來說,最佳方法取決于具體的要求和約束。


結(jié)論

總的來說,本文概述了使用Python從2D圖像進行3D重建的過程。我們討論了深度圖、點云和網(wǎng)格等關(guān)鍵概念,并使用TempleRing數(shù)據(jù)集演示了使用兩種不同方法逐步進行的過程。我們希望本文能幫助您更好地理解從2D圖像進行3D重建以及如何使用Python實現(xiàn)這一過程。有許多可用于執(zhí)行3D重建的不同方法和算法,我們鼓勵您進行實驗和探索,以找到最適合您需求的方法。


本文網(wǎng)址:
下一篇:沒有資料

相關(guān)信息:
版權(quán)所有 CopyRight 2006-2017 江蘇和訊自動化設備有限公司 常州自動化培訓中心 電話:0519-85602926 地址:常州市新北區(qū)府琛商務廣場2號樓1409室
蘇ICP備14016686號-2 技術(shù)支持:常州山水網(wǎng)絡
本站關(guān)鍵詞:常州PLC培訓 常州PLC編程培訓 常州PLC編程 常州PLC培訓班 網(wǎng)站地圖 網(wǎng)站標簽
在線與我們?nèi)〉寐?lián)系
色婷婷AV无码久久精品,久久天天躁狠狠躁夜夜97,羞羞麻豆国产精品1区2区3区,啪影院免费线观看视频,思思久久er99精品亚洲