【问题标题】:How to remove specific data in image processing如何去除图像处理中的特定数据
【发布时间】:2021-04-18 04:55:04
【问题描述】:

我有图像数据,我正在使用它来训练我的机器学习,使用 SIFT,但我的数据存在一些图像包含 0 图像描述符的问题。所以当我完成训练和测试时,我的结果只达到了 56%(当然,这不是我预期的结果)。为了解决这个问题,我决定删除一些包含 0 图像描述符的图像。但是,我只能从包含图像描述符的 images_descriptor 数组中删除。这里的问题是不知道我必须删除哪些图像,以便我可以删除它们的“目标”。
我的数据有一个形状:(15000, 64, 64, 3)

到目前为止我的代码:

X = data['data']
y = data['targets']

#Extract image descriptor using sift from X(Which is the data of your images)
images_descriptor = extract_sift_feature(X)

index_list = []
filter_images_descriptor = []
for i in range(len(images_descriptor)):
    if images_descriptor[i] is not None:
        filter_images_descriptor.append(images_descriptor[i])
        
    if images_descriptor[i] is None:
        index = np.where(images_descriptor == images_descriptor[i]) 
        index_list.append(index[0])     
filter_images_descriptor = np.array(filter_images_descriptor)

我正在尝试创建一个索引以从 images_descriptor 获取索引,以便我可以使用 np.where 知道哪个图像包含 0 图像描述符的位置。然后我可以在y 中删除我从images_descriptor 中删除的图像。但我收到的结果是:(array([], dtype=int64)

【问题讨论】:

  • 空图像通常不包含任何特征。
  • 是的,但是如果图像太多而我们不知道哪个图像不包含任何特征会发生什么,@YvesDaoust
  • 我怎么知道。这取决于您的应用程序以及为什么会有空图像。

标签: python machine-learning image-processing numpy-ndarray feature-descriptor


【解决方案1】:

对于这个问题,我在数据中的一些图像不包含任何特征。所以我给它解决方案来删除任何没有功能的数据

def extract_sift_feature(X, y):
    images_descriptor = []
    filter_images_descriptor = []
    NoneType_index_list = []
    sift = cv2.SIFT_create()

    for i in range(len(X)):
        _kp, des = sift.detectAndCompute(X[i], None)
        images_descriptor.append(des)
        #Check if there any image has 0 feature descriptor 
        if des is None:
          NoneType_index_list.append(i)
    images_descriptor = np.array(images_descriptor)

    #Filter image any image has 0 feature descriptor 
    for i in range(len(images_descriptor)):
        if images_descriptor[i] is not None:
            filter_images_descriptor.append(images_descriptor[i])
    filter_images_descriptor = np.array(filter_images_descriptor)

    new_y = np.delete(y, NoneType_index_list)
    return filter_images_descriptor, new_y

【讨论】:

    猜你喜欢
    • 2017-09-12
    • 1970-01-01
    • 2017-05-27
    • 2020-06-03
    • 1970-01-01
    • 1970-01-01
    • 2011-07-27
    • 2018-02-24
    • 1970-01-01
    相关资源
    最近更新 更多