1 回答

TA貢獻2041條經驗 獲得超4個贊
假設您要省略的像素值為 0。
在這種情況下,您可以做的是,首先找到非零值的索引,然后在 / 位置對圖像進行切片min以max僅獲得所需的區域,然后簡單地應用extract_patches_2d所需的窗口大小和補丁數量。
例如,考慮到您提供的虛擬圖像:
import numpy as np
from scipy.ndimage.filters import convolve
import matplotlib.pyplot as plt
background = np.ones((155,240))
background[78,120] = 2
n_d = 50
y,x = np.ogrid[-n_d: n_d+1, -n_d: n_d+1]
mask = x**2+y**2 <= n_d**2
mask = 254*mask.astype(float)
image_process = convolve(background, mask)-sum(sum(mask))+1
image_process[image_process==1] = 0
image_process[image_process==255] = 1
plt.figure()
plt.imshow(image_process)
plt.show()
from sklearn.feature_extraction.image import extract_patches_2d
x, y = np.nonzero(image_process)
xl,xr = x.min(),x.max()
yl,yr = y.min(),y.max()
only_desired_area = image_process[xl:xr+1, yl:yr+1]
window_shape = (25, 25)
B = extract_patches_2d(only_desired_area, window_shape, max_patches=100) # B shape will be (100, 25, 25)
如果繪制它,only_desired_area您將得到以下圖像:
這是主要邏輯,如果您希望更緊的邊界,您應該適當調整切片。
添加回答
舉報