当前位置: 首页 > news >正文

移动手机网站开发什么软件推广效果好

移动手机网站开发,什么软件推广效果好,视频制作gif表情包,武汉职业技术学院一、背景 已知相机参数(传感器宽度和高度、图像宽度和高度、焦距、相对航高、像主点坐标 ),在给定像素坐标的前提下,求世界坐标,大部分通过AI来实现,不知道哪个步骤有问题,望大家指正 二、代码…

一、背景

已知相机参数(传感器宽度和高度、图像宽度和高度、焦距、相对航高、像主点坐标 ),在给定像素坐标的前提下,求世界坐标,大部分通过AI来实现,不知道哪个步骤有问题,望大家指正

二、代码
import numpy as np
import cv2
# 畸变校正
def undistort_pixel(pixel_x, pixel_y, sym_dist, dec_dist):
    k0,k1,k2,k3=sym_dist
    # k1, k2, p1, p2, k3 = sym_dist
    p1,p2,p3=dec_dist
    fx = focal_length_mm
    fy = focal_length_mm
    cx = xpoff_px
    cy = ypoff_px
    distCoeffs = np.array([k1, k2, p1, p2,k3])
    cameraMatrix = np.array([[fx, 0, cx], [0, fy, cy], [0, 0, 1]])
    distorted_points = np.array([[pixel_x, pixel_y]], dtype=np.float32)
    undistorted_points = cv2.undistortPoints(distorted_points, cameraMatrix, distCoeffs)
    #################################################### 4\对图像去畸变
    img = cv2.imread('./images/100_0004_0001.JPG')
    img_undistored = cv2.undistort(img, cameraMatrix, distCoeffs)
    cv2.imwrite('./images/100_0004_00011.JPG', img_undistored)
    return undistorted_points[0][0][0], undistorted_points[0][0][1]
# 相机坐标转世界坐标
def camera_to_world_coordinates(cam_coords, pos):
    # 获取相机到世界的转换参数
    pos_x, pos_y, pos_z, roll, pitch, yaw = pos
    # 将角度转换为弧度
    roll = np.radians(roll)
    pitch = np.radians(pitch)
    yaw = np.radians(yaw)
    # 计算旋转矩阵
    R_roll = np.array([
        [1, 0, 0],
        [0, np.cos(roll), -np.sin(roll)],
        [0, np.sin(roll), np.cos(roll)]
    ])
    R_pitch = np.array([
        [np.cos(pitch), 0, np.sin(pitch)],
        [0, 1, 0],
        [-np.sin(pitch), 0, np.cos(pitch)]
    ])
    R_yaw = np.array([
        [np.cos(yaw), -np.sin(yaw), 0],
        [np.sin(yaw), np.cos(yaw), 0],
        [0, 0, 1]
    ])
    R = R_yaw @ R_pitch @ R_roll
    # 相机坐标转换到世界坐标
    cam_coords_homogeneous = np.array([cam_coords[0], cam_coords[1], -H, 1])
    world_coords = R @ cam_coords_homogeneous[:3] + np.array([pos_x, pos_y, pos_z])
    return world_coords
if __name__ == "__main__":


取消
首页
编程
手机
软件
硬件
安卓
苹果
手游
教程
平面
服务器
首页 > 脚本专栏 > python > python无人机航拍图片像素坐标
python实现无人机航拍图片像素坐标转世界坐标的示例代码
2024-06-12 10:42:38 作者:GIS从业者

已知相机参数在给定像素坐标的前提下,求世界坐标,大部分通过AI来实现,本文给大家分享实现脚本,感兴趣的朋友跟随小编一起看看吧
背景
已知相机参数(传感器宽度和高度、图像宽度和高度、焦距、相对航高、像主点坐标 ),在给定像素坐标的前提下,求世界坐标,大部分通过AI来实现,不知道哪个步骤有问题,望大家指正

脚本
import numpy as np
import cv2
# 畸变校正
def undistort_pixel(pixel_x, pixel_y, sym_dist, dec_dist):
    k0,k1,k2,k3=sym_dist
    # k1, k2, p1, p2, k3 = sym_dist
    p1,p2,p3=dec_dist
    fx = focal_length_mm
    fy = focal_length_mm
    cx = xpoff_px
    cy = ypoff_px
    distCoeffs = np.array([k1, k2, p1, p2,k3])
    cameraMatrix = np.array([[fx, 0, cx], [0, fy, cy], [0, 0, 1]])
    distorted_points = np.array([[pixel_x, pixel_y]], dtype=np.float32)
    undistorted_points = cv2.undistortPoints(distorted_points, cameraMatrix, distCoeffs)
    #################################################### 4\对图像去畸变
    img = cv2.imread('./images/100_0004_0001.JPG')
    img_undistored = cv2.undistort(img, cameraMatrix, distCoeffs)
    cv2.imwrite('./images/100_0004_00011.JPG', img_undistored)
    return undistorted_points[0][0][0], undistorted_points[0][0][1]
# 相机坐标转世界坐标
def camera_to_world_coordinates(cam_coords, pos):
    # 获取相机到世界的转换参数
    pos_x, pos_y, pos_z, roll, pitch, yaw = pos
    # 将角度转换为弧度
    roll = np.radians(roll)
    pitch = np.radians(pitch)
    yaw = np.radians(yaw)
    # 计算旋转矩阵
    R_roll = np.array([
        [1, 0, 0],
        [0, np.cos(roll), -np.sin(roll)],
        [0, np.sin(roll), np.cos(roll)]
    ])
    R_pitch = np.array([
        [np.cos(pitch), 0, np.sin(pitch)],
        [0, 1, 0],
        [-np.sin(pitch), 0, np.cos(pitch)]
    ])
    R_yaw = np.array([
        [np.cos(yaw), -np.sin(yaw), 0],
        [np.sin(yaw), np.cos(yaw), 0],
        [0, 0, 1]
    ])
    R = R_yaw @ R_pitch @ R_roll
    # 相机坐标转换到世界坐标
    cam_coords_homogeneous = np.array([cam_coords[0], cam_coords[1], -H, 1])
    world_coords = R @ cam_coords_homogeneous[:3] + np.array([pos_x, pos_y, pos_z])
    return world_coords
if __name__ == "__main__":
    ####################################################基本参数
    # 传感器宽度和高度(毫米)
   sensor_width_mm = 12.83331744000000007588
    sensor_height_mm = 8.55554496000000064271
    # 图像宽度和高度(像素)
    image_width_px = 5472
    image_height_px = 3648
    # 焦距(毫米)
    focal_length_mm = 8.69244671863242679422
    # 焦距(米)
    focal_length_m = 8.69244671863242679422/1000
    # 相对航高(米)
    H=86.93
    #像主点坐标 (像素)
    xpoff_px=20.88973563438230485190
    ypoff_px=50.51977022866981315019
    #################################################### 1\计算空间分辨率
    # 传感器尺寸转换为米
    sensor_width_m = sensor_width_mm / 1000
    sensor_height_m = sensor_height_mm / 1000
    # 计算水平和垂直的 GSD
    GSD_x = (sensor_width_m/image_width_px) * (H / focal_length_m )
    GSD_y = (sensor_height_m /image_height_px) * (H / focal_length_m)
    # 水平和垂直方向的 GSD
    print("水平方向的 GSD:", GSD_x, "米/像素")
    print("垂直方向的 GSD:", GSD_y, "米/像素")
    #################################################### 2\给定像素坐标,计算相机坐标
    # 像素坐标
    oripixel_x = image_width_px
    oripixel_y = image_height_px
    # oripixel_x = image_width_px/2
    # oripixel_y = image_height_px/2
    # oripixel_x = 0
    # oripixel_y = 0
    pixel_x=oripixel_x-xpoff_px-image_width_px/2
    pixel_y=oripixel_y-ypoff_px-image_height_px/2
    # 计算相机坐标(假设无畸变)
    camera_x = pixel_x * GSD_x
    camera_y = pixel_y * GSD_y
    print("像素坐标 (", oripixel_x, ",", oripixel_y, ") 对应的相机坐标 (x, y): (", camera_x, "米, ", camera_y, "米)")
    #################################################### 3\计算畸变后坐标
    # 对称畸变系数
    sym_dist = [0, -0.00043396118129128110, 0.00000262222711982075, -0.00000001047488706013]
    # 径向畸变
    dec_dist = [0.00000205885592671873, -0.00000321714140091248, 0]
    # 进行畸变校正
    undistorted_camera_x, undistorted_camera_y = undistort_pixel(pixel_x, pixel_y, sym_dist, dec_dist)
    print("畸变校正后像素坐标 (", oripixel_x, ",", oripixel_y, ") 对应的相机坐标 (x, y): (", undistorted_camera_x, "米, ", undistorted_camera_y, "米)")
    #################################################### 4\计算世界坐标
    # POS数据
    pos = [433452.054688, 2881728.519704, 183.789696, 0.648220, -0.226028, 14.490357]
    # 计算世界坐标
    world_coords = camera_to_world_coordinates((undistorted_camera_x, undistorted_camera_y), pos)
    print("旋转平移变换后像素坐标 (", oripixel_x, ",", oripixel_y, ") 对应的世界坐标 (x, y): (", world_coords[0], "米, ", world_coords[1], "米)")
到此这篇关于python实现无人机航拍图片像素坐标转世界坐标的示例代码的文章就介绍到这了。

http://www.hengruixuexiao.com/news/6172.html

相关文章:

  • 定制网站建设广告域名注册服务网站
  • wordpress个人介绍主题网站seo内容优化
  • 有域名怎么发布网站吗百度推广图片尺寸要求
  • 淮阳城乡建设局网站可以搜索国外网站的搜索引擎
  • 如何建设免费网站常州seo博客
  • 站外推广6种方法清远新闻最新
  • 四模网站今日新闻最新消息
  • php做动态网站大型网站建设公司
  • 网站移动页面怎么做的口碑营销的好处
  • 荥阳网站建设荥阳南宁百度seo推广
  • 湖北做网站的公司网络舆情案例分析
  • 深圳建设网站哪家最好谷歌推广公司哪家好
  • 现在什么行业发展前景最好淘宝seo具体优化方法
  • wordpress 底部音乐播放器插件武汉seo优化排名公司
  • 做柜子好的设计网站北京seo排名外包
  • 企业营销型网站概念百度在线咨询
  • 淘客请人做网站个人网页制作成品
  • 现在自己做网站卖东西行么友情链接发布平台
  • fview网站开发google网站登录入口
  • 淄博网站优化首选公司seo搜论坛
  • 网站建设案例企业中国网站排名前100
  • 网站建设技术公司排名com域名注册
  • 网站开发制作学徒刷钻业务推广网站
  • 做网站是干嘛的整合营销传播成功案例
  • 泊头网站建设服务搜索引擎优化的主题
  • 开发板种类如何做网站关键词优化
  • 备案的网站建设书是什么百度站长平台账号购买
  • 广德县城乡和建设委员会网站seo培训资料
  • 我想做个旅游网站怎么做郑州百度seo关键词
  • 网站有了备案号之后能做什么网络营销推广是做什么的