基于TransU-Net的遥感图像语义分割与分类,遥感建筑物数据集,基于Pytorch框架,针对不同城市建筑物精准提取,

张开发
2026/4/13 16:26:09 15 分钟阅读

分享文章

基于TransU-Net的遥感图像语义分割与分类,遥感建筑物数据集,基于Pytorch框架,针对不同城市建筑物精准提取,
基于TransU-Net的遥感图像语义分割与分类遥感建筑物数据集基于Pytorch框架针对不同城市建筑物精准提取包含一万多字报告如图所示有代码数据集模型方案一生成类似图片中的网页缩略图列表 (HTML CSS)如果你想做一个网页来展示这些图片让它们像图中那样整齐排列可以使用以下代码。使用方法创建一个文件夹。将你的图片0.PNG, 1.PNG…放入该文件夹。创建一个 index.html 文件粘贴以下代码。图片切片预览 body { font-family: Arial, sans-serif; background-color: #f4f4f4; padding: 20px; } .gallery { display: flex; flex-wrap: wrap; gap: 15px; justify-content: center; } .image-card { background: white; border: 1px solid #ddd; border-radius: 8px; padding: 10px; width: 150px; text-align: center; box-shadow: 0 2px 5px rgba(0,0,0,0.1); transition: transform 0.2s; } .image-card:hover { transform: scale(1.05); border-color: #007bff; } .image-card img { max-width: 100%; height: auto; border-radius: 4px; } .filename { margin-top: 8px; font-size: 14px; color: #333; word-break: break-all; } // 假设你有 0.PNG 到 19.PNG const totalImages 20; const container document.getElementById(gallery); for (let i 0; i方案二Python 批量重命名/整理代码运行脚本。import osdef rename_images_in_folder(folder_path):# 支持的图片格式valid_extensions (‘.png’, ‘.jpg’, ‘.jpeg’, ‘.bmp’, ‘.gif’)# 获取所有图片文件 files [f for f in os.listdir(folder_path) if f.lower().endswith(valid_extensions)] # 排序确保顺序一致 files.sort() print(f找到 {len(files)} 个图片文件开始重命名...) for index, filename in enumerate(files): # 构造新的文件名例如 0.PNG, 1.PNG # 注意原图是大写扩展名这里统一转为大写 .PNG new_name f{index}.PNG # 获取完整路径 old_path os.path.join(folder_path, filename) new_path os.path.join(folder_path, new_name) # 如果新旧名字不一样才重命名 if old_path ! new_path: try: os.rename(old_path, new_path) print(f重命名: {filename} - {new_name}) except FileExistsError: print(f跳过: {new_name} 已经存在) print(处理完成)if name “main”:# 当前目录current_dir os.getcwd()rename_images_in_folder(current_dir)方案三Python 图片拼接代码 (进阶)from PIL import Imageimport osdef stitch_images(folder_path, images_per_row):images []# 读取所有PNG文件files [f for f in os.listdir(folder_path) if f.lower().endswith(‘.png’)]files.sort(keylambda x: int(os.path.splitext(x)[0])) # 按数字排序for f in files: images.append(Image.open(os.path.join(folder_path, f))) if not images: print(未找到图片) return # 获取单张图片的尺寸 w, h images[0].size # 计算总行数和总尺寸 rows (len(images) images_per_row - 1) // images_per_row total_width images_per_row * w total_height rows * h # 创建空白大图 new_img Image.new(RGB, (total_width, total_height)) for idx, img in enumerate(images): x (idx % images_per_row) * w y (idx // images_per_row) * h new_img.paste(img, (x, y)) new_img.save(stitched_result.jpg) print(拼接完成保存为 stitched_result.jpg)代码示例import osimport numpy as npfrom PIL import Image配置参数IMAGE_SIZE (256, 256) # 图片尺寸OUTPUT_DIR “masks” # 输出文件夹NUM_IMAGES 20 # 生成图片的数量 (0-19)创建输出目录if not os.path.exists(OUTPUT_DIR):os.makedirs(OUTPUT_DIR)def generate_mask(index):“”模拟生成一个语义分割掩膜。在实际应用中这里应该是你的模型预测结果或者标注数据。“”# 创建一个空的灰度图像数组 (0 黑色/背景)mask_array np.zeros(IMAGE_SIZE, dtypenp.uint8)# --- 模拟不同的类别区域 --- # 类别 1: 灰色 (例如: 道路) - 值设为 128 # 这里用简单的几何图形模拟实际中通常是复杂的轮廓 cv2_rectangle lambda img, val: cv2.rectangle(img, (50, 50), (200, 200), val, -1) # 根据索引改变图案位置模拟不同的图片 offset (index * 10) % 100 # 背景 (黑色, 0) 已经在初始化时完成 # 绘制类别 1 (灰色, 128) - 模拟“道路”或“中间区域” mask_array[50offset:200-offset, 50:200] 128 # 绘制类别 2 (白色, 255) - 模拟“建筑物”或“前景” mask_array[80:180, 80offset:180] 255 # 添加一些随机噪声或细节使其看起来更像真实的分割图 noise np.random.randint(0, 20, IMAGE_SIZE, dtypenp.uint8) mask_array np.clip(mask_array noise, 0, 255) return mask_array # 转换为PIL图像 (模式 L 代表 8位灰度) img Image.fromarray(mask_data, modeL) # 保存文件 filename f{i}.PNG img.save(os.path.join(OUTPUT_DIR, filename))print(“生成完成”)代码解析灰度模式 (‘L’)代码中使用了 mode‘L’这对应了 8-bit 像素黑白模式。这是语义分割 Mask 的标准格式。像素值含义0 (黑色)通常代表“背景”或“无数据”。128 (灰色)代表“类别 1”例如道路。255 (白色)代表“类别 2”例如建筑物。import osfrom PIL import Imagedef merge_images(image_folder, output_path, grid_size(4, 5)):“”将切分的小图拼接成一张大图。grid_size: (列数, 行数)根据你的图看大概是 6列 x 3行 (虽然缺了6和18)“”images []# 获取文件列表并排序file_names sorted([f for f in os.listdir(image_folder) if f.endswith(‘.PNG’)], keylambda x: int(os.path.splitext(x)[0]))for file_name in file_names: images.append(Image.open(os.path.join(image_folder, file_name))) if not images: print(未找到图片) return # 假设所有图片大小一致 w, h images[0].size # 创建空白大图 # 注意这里简单估算实际需要根据你的具体排列逻辑调整 cols, rows grid_size result_width cols * w result_height rows * h new_img Image.new(RGB, (result_width, result_height), color(128, 128, 128)) for idx, img in enumerate(images): # 计算位置 col idx % cols row idx // cols box (col * w, row * h) new_img.paste(img, box) new_img.save(output_path) print(f拼接完成保存为: {output_path})在这里插入图片描述

更多文章