यह तेजी से किया जा सकता है, देगी और कुल्हाड़ियों की अदला-बदली, और तब सभी गिरी तत्वों से अधिक दोहरा, इस तरह से:
im = np.arange(81).reshape(9,9)
print np.swapaxes(im.reshape(3,3,3,-1),1,2)
यह आपको 3 * 3 टाइल की एक सरणी जो भर में tessalates देता है सतह:
[[[[ 0 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]]]]
vstack
औरका एक संयोजन का उपयोग करके अतिव्यापी टाइल्स हम इस 8 आगे बार दोहराने की आवश्यकता है, लेकिन 'रैपिंग' सरणी, प्राप्त करने के लिए। ध्यान दें कि सही और नीचे टाइल सरणियों लपेट (जो हो सकता है या नहीं हो सकता है कि आप क्या चाहते हैं, आप कैसे व्यवहार कर रहे बढ़त की स्थिति के आधार पर):
im = np.vstack((im[1:],im[0]))
im = np.column_stack((im[:,1:],im[:,0]))
print np.swapaxes(im.reshape(3,3,3,-1),1,2)
#Output:
[[[[10 11 12] [[13 14 15] [[16 17 9]
[19 20 21] [22 23 24] [25 26 18]
[28 29 30]] [31 32 33]] [34 35 27]]]
[[[37 38 39] [[40 41 42] [[43 44 36]
[46 47 48] [49 50 51] [52 53 45]
[55 56 57]] [58 59 60]] [61 62 54]]]
[[[64 65 66] [[67 68 69] [[70 71 63]
[73 74 75] [76 77 78] [79 80 72]
[ 1 2 3]] [ 4 5 6]] [ 7 8 0]]]]
यह इस तरह से आप सरणियों के 9 सेट के साथ हवा कर , तो फिर आपको उन्हें एक साथ वापस ज़िप करने की आवश्यकता है। यह है, और सभी को पुन: आकार (सरणियों जहां आयाम 3 से विभाज्य हैं के लिए) इस के लिए generalises:
def new(im):
rows,cols = im.shape
final = np.zeros((rows, cols, 3, 3))
for x in (0,1,2):
for y in (0,1,2):
im1 = np.vstack((im[x:],im[:x]))
im1 = np.column_stack((im1[:,y:],im1[:,:y]))
final[x::3,y::3] = np.swapaxes(im1.reshape(rows/3,3,cols/3,-1),1,2)
return final
तेजी से सभी स्लाइस (नीचे) के माध्यम से पाशन को यह new
समारोह मुकाबले timeit
का उपयोग कर, अपने बारे में 4 बार 300 * 300 सरणी के लिए।
def old(im):
rows,cols = im.shape
s = []
for x in xrange(1,rows):
for y in xrange(1,cols):
s.append(im[x-1:x+2,y-1:y+2])
return s
आपका इरादा क्या है निम्नलिखित कोड का प्रयास करें? शायद आप एक रूपांतरण करना चाहते हैं? हमें बताएं कि आप 'मास्क 5' के साथ क्या करने जा रहे हैं, तो हम आपको बेहतर, चीयर्स की मदद कर सकते हैं। – fraxel
@fraxel: मुझे विंडो मिलने के बाद, मुझे पिक्सेल को 3x3 विंडो में तीव्रता से क्रमबद्ध करने की आवश्यकता है, और इस सूची में एक और (एक-आयामी) स्लाइडिंग विंडो बनाएं, और पिक्सेल के माध्यमों पर जटिल स्थिति के आधार पर ये (1-डी) स्लाइड, तदनुसार मूल केंद्र पिक्सेल को संशोधित करें। –
लगता है जैसे आप [अनुकूली दहलीज] (http://opencv.willowgarage.com/documentation/python/imgproc_miscellaneous_image_transformations.html?highlight=adaptivethreshold#AdaptiveThreshold) करने की कोशिश कर रहे हैं? उस पर एक नज़र डालें, यह वही कर सकता है जो आप चाहते हैं। – fraxel