File size: 4,266 Bytes
b177539
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
import os
import numpy as np
from PIL import Image
import torch

def resize_to_image_8():
    # 原始图片文件夹路径
    input_folder = "D:\XMU\mac\hujie\\3D\DUSt3R\dust3r\data\llff(sanerf-hq)\colinepiano\images"
    # 新的保存缩放图片的文件夹路径
    output_folder = "D:\XMU\mac\hujie\\3D\DUSt3R\dust3r\data\llff(sanerf-hq)\colinepiano\images_8"

    # 创建输出文件夹(如果不存在)
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)

    # 遍历输入文件夹中的所有文件
    for filename in os.listdir(input_folder):
        # 获取文件路径
        file_path = os.path.join(input_folder, filename)

        # 确保是文件且是图片文件(这里假设图片格式为jpg或png)
        if os.path.isfile(file_path) and filename.lower().endswith(('.jpg', '.jpeg', '.png')):
            # 打开图片
            original_image = Image.open(file_path)

            # 获取原始尺寸
            original_width, original_height = original_image.size

            # 计算缩放后的尺寸(1/8)
            new_width = original_width // 8
            new_height = original_height // 8

            # 进行缩放
            resized_image = original_image.resize((new_width, new_height), Image.LANCZOS)

            # 生成新的文件名并保存到输出文件夹
            new_file_path = os.path.join(output_folder, filename)
            resized_image.save(new_file_path)
            print(f"Image {filename} resized and saved to {new_file_path}")

    print("All images have been resized and saved.")


def RGB_to_mask():

    # 输入文件夹路径
    input_folder = "D:\XMU\mac\hujie\\3D\DUSt3R\dust3r\data\llff(sanerf-hq)\\piano\gt"
    # 输出文件夹路径
    output_folder = "D:\XMU\mac\hujie\\3D\DUSt3R\dust3r\data\llff(sanerf-hq)\\piano\gt_masks"

    # 创建输出文件夹(如果不存在)
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)

    # 遍历输入文件夹中的所有文件
    for filename in os.listdir(input_folder):
        # 构建完整的文件路径
        file_path = os.path.join(input_folder, filename)

        # 打开图片
        image = Image.open(file_path).convert('RGB')

        # 转换为灰度图像
        gray_image = image.convert('L')

        # 转换为NumPy数组
        gray_array = np.array(gray_image)

        # 二值化(假设阈值为128,可根据需要调整)
        threshold = 10
        binary_array = (gray_array > threshold).astype(np.uint8) * 255

        # 转换为Image对象
        binary_image = Image.fromarray(binary_array, 'L')  # 'L'代表灰度模式

        base_name, extension = os.path.splitext(filename)

        # 生成新的文件名
        new_filename = base_name + "_mask" + extension

        new_file_path = os.path.join(output_folder, new_filename)

        # 保存新的图片
        binary_image.save(new_file_path)
        print(f"Converted {filename} to {new_filename} and saved.")

    print("All images have been processed.")

# 读取mask文件夹下的所有ground truth masks,不再需要经过SAM生成mask
def get_gt_masks(folder_path):

    from dust3r.utils.image import load_images, rgb
    imgs_mask = load_images(folder_path, 512)
    # 定义保存布尔mask的列表
    bool_masks = []

    for mask in imgs_mask:
        image_array = mask['img'].squeeze(0).numpy()
        # 将RGB图像转换为灰度图像
        # 使用简单的加权方法转换为灰度: Y = 0.299*R + 0.587*G + 0.114*B
        gray_image = 0.299 * image_array[0] + 0.587 * image_array[1] + 0.114 * image_array[2]

        # 将灰度图像转换为布尔数组(前景为True,背景为False)
        bool_array = gray_image > 0

        # 将布尔数组添加到列表中
        bool_masks.append(bool_array)

    # 输出布尔mask的数量
    print(f"Total number of mask images processed: {len(bool_masks)}")
    return bool_masks

if __name__ == "__main__":
    # 输入文件夹路径
    folder_path = "D:\XMU\mac\hujie\\3D\DUSt3R\dust3r\data\llff(sanerf-hq)\cecread\gt_masks"

    RGB_to_mask()