अच्छा सवाल! tcaswell यहां पोस्ट एक अच्छा सुझाव है, लेकिन आप इस तरह से बहुत कुछ नहीं सीखेंगे क्योंकि scipy आपके लिए सभी काम कर रहा है! चूंकि आपके प्रश्न में कहा गया था कि आप फ़ंक्शन फ़ंक्शन को लिखने और लिखना चाहते हैं, तो मैं आशा करता हूं कि आप इसे उम्मीद में मैन्युअल रूप से समझने के लिए थोड़ा और अधिक कच्चे और बुनियादी प्रकार का तरीका दिखाएंगे कि आप संकल्प आदि के पीछे गणित को बेहतर ढंग से समझेंगे, और फिर आप अपने विचारों और प्रयासों के साथ इसे सुधार सकते हैं!
नोट: आपको अलग-अलग आकार/कर्नेल के आकार के साथ अलग-अलग परिणाम मिलेंगे, एक गॉसियन सामान्य तरीका है लेकिन आप मज़ेदार (कोसाइन, त्रिकोण, इत्यादि) के लिए कुछ अन्य लोगों को आजमा सकते हैं। मैंने बस इसे जगह पर बनाया है, मुझे लगता है कि यह एक प्रकार का पिरामिड आकार वाला है।
import scipy.signal
import numpy as np
import matplotlib.pyplot as plt
im = plt.imread('example.jpg')
im /= 255. # normalise to 0-1, it's easier to work in float space
# make some kind of kernel, there are many ways to do this...
t = 1 - np.abs(np.linspace(-1, 1, 21))
kernel = t.reshape(21, 1) * t.reshape(1, 21)
kernel /= kernel.sum() # kernel should sum to 1! :)
# convolve 2d the kernel with each channel
r = scipy.signal.convolve2d(im[:,:,0], kernel, mode='same')
g = scipy.signal.convolve2d(im[:,:,1], kernel, mode='same')
b = scipy.signal.convolve2d(im[:,:,2], kernel, mode='same')
# stack the channels back into a 8-bit colour depth image and plot it
im_out = np.dstack([r, g, b])
im_out = (im_out * 255).astype(np.uint8)
plt.subplot(2,1,1)
plt.imshow(im)
plt.subplot(2,1,2)
plt.imshow(im_out)
plt.show()
आप एक 2d convolve शायद आवश्यकता होगी, उदा 'scipy.signal.convolve2d' – wim