如何去除图像处理中的特定数据
How to remove specific data in image processing
我有图像数据,我正在使用它来使用 SIFT 训练我的机器学习,但是我的数据有一些图像包含 0 个图像描述符的问题。所以当我完成训练和测试时,我的结果只达到了56%(当然,这不是我预期的结果)。为了解决这个问题,我决定删除一些包含 0 个图像描述符的图像。但是,我只能从包含图像描述符的 images_descriptor 数组中删除。这里的问题是不知道我必须删除哪些图像才能删除它们 'target'。
我的数据有一个形状:(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)
.
对于这个问题,我在数据中的一些图像不包含任何特征。所以我给了它删除任何没有特征的数据的解决方案
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
我有图像数据,我正在使用它来使用 SIFT 训练我的机器学习,但是我的数据有一些图像包含 0 个图像描述符的问题。所以当我完成训练和测试时,我的结果只达到了56%(当然,这不是我预期的结果)。为了解决这个问题,我决定删除一些包含 0 个图像描述符的图像。但是,我只能从包含图像描述符的 images_descriptor 数组中删除。这里的问题是不知道我必须删除哪些图像才能删除它们 'target'。
我的数据有一个形状:(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)
.
对于这个问题,我在数据中的一些图像不包含任何特征。所以我给了它删除任何没有特征的数据的解决方案
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