补丁创建中的尺寸问题

我有一个650x650大小的二进制图像。我想创建50x50的补丁。这意味着我需要169个补丁。我想检查每个补丁中是否至少有一个“ ONE”元素。 我还需要结果是每个补丁都成对出现。

这里有一个2d的示例: 2d example

到目前为止很好。当我从skimage.util.shape实现view_as_blocks函数时,它返回(13,13,50,50)的列表。

我搜索“ Ones”的方式将是numpy.where,但是我迷失了尺寸... 这是我的代码:

def distinguish_patches_for_label(image_path):
    im1=cv2.imread(image_path)

    im2 = cv2.cvtColor(im1,cv2.COLOR_BGR2GRAY)
    im3=(im2>100).astype(np.uint8) 
    im4 = cv2.resize(im3,(650,650)) 
    patches=view_as_blocks(im4,block_shape=(50,50))

    for i in range(patches.shape[0]):
        for j in range(patches.shape[0]): 
            indexes_normal=list(zip(*np.where(patches[i,j,:,:]== 0)))

    for i in range(patches.shape[0]):
        for j in range(patches.shape[0]):


            indexes_XDs=list(zip(*np.where(patches[i,:]== 1)))


    list1=[]
    list2=[]
    for i in range(len(indexes_normal)):
        list1.append(indexes_normal[i][0])
        list2.append(indexes_normal[i][1])
    zipped_indexes_normal=list(zip(list1,list2))


    list3=[]
    list4=[]
    for i in range(len(indexes_XDs)):
        list3.append(indexes_XDs[i][0])
        list4.append(indexes_XDs[i][1])
    zipped_indexes_XDs=list(zip(list3,list4))


    return zipped_indexes_normal,zipped_indexes_XDs
xinchengsoft 回答:补丁创建中的尺寸问题

我不确定您要获得什么作为输出,但是下面将在每个补丁中找到1的数量:

import numpy as np
from skimage import io,util


def count_ones_in_patches(image_path):
    image = io.imread(image_path)
    patches = util.view_as_blocks(image,(50,50))
    ones_per_patch = np.sum(patches,axis=(2,3))
    return ones_per_patch

使用numpy axis=关键字参数通常是一个很好的主意。 =)

本文链接:https://www.f2er.com/3087260.html

大家都在问