"उच्च पास फ़िल्टर" एक बहुत ही सामान्य शब्द है। अलग-अलग "हाईपास फिल्टर" की असीमित संख्या होती है जो बहुत अलग चीजें करते हैं (उदाहरण के लिए पहले बताए गए किनारे का डिटेक्शन फ़िल्टर तकनीकी रूप से एक हाईपास (अधिकांश वास्तव में एक बैंडपास) फ़िल्टर है, लेकिन संभवत: आप जो भी संभवतः उससे बहुत अलग प्रभाव डालते हैं
किसी भी दर पर, सवाल आप पूछ किया गया है का सबसे आधार पर मन में था।), तो आप शायद scipy.filter
के बजाय scipy.ndimage
ध्यान देना चाहिए, खासकर यदि आप बड़ी छवियों के साथ काम करने जा रहे हैं (ndimage कर सकते हैं स्मृति में संरक्षण, पूर्ववर्ती संचालन)।
एक बुनियादी उदाहरण के रूप में काम करने के लिए कुछ अलग अलग तरीकों से दिखा:
import matplotlib.pyplot as plt
import numpy as np
from scipy import ndimage
import Image
def plot(data, title):
plot.i += 1
plt.subplot(2,2,plot.i)
plt.imshow(data)
plt.gray()
plt.title(title)
plot.i = 0
# Load the data...
im = Image.open('lena.png')
data = np.array(im, dtype=float)
plot(data, 'Original')
# A very simple and very narrow highpass filter
kernel = np.array([[-1, -1, -1],
[-1, 8, -1],
[-1, -1, -1]])
highpass_3x3 = ndimage.convolve(data, kernel)
plot(highpass_3x3, 'Simple 3x3 Highpass')
# A slightly "wider", but sill very simple highpass filter
kernel = np.array([[-1, -1, -1, -1, -1],
[-1, 1, 2, 1, -1],
[-1, 2, 4, 2, -1],
[-1, 1, 2, 1, -1],
[-1, -1, -1, -1, -1]])
highpass_5x5 = ndimage.convolve(data, kernel)
plot(highpass_5x5, 'Simple 5x5 Highpass')
# Another way of making a highpass filter is to simply subtract a lowpass
# filtered image from the original. Here, we'll use a simple gaussian filter
# to "blur" (i.e. a lowpass filter) the original.
lowpass = ndimage.gaussian_filter(data, 3)
gauss_highpass = data - lowpass
plot(gauss_highpass, r'Gaussian Highpass, $\sigma = 3 pixels$')
plt.show()
एक महान स्क्रिप्ट के लिए धन्यवाद! मैंने convolve() और matplotlib * और * पायथन भी के बारे में बहुत कुछ सीखा। (मुझे नहीं पता था कि "plot.i" कुछ काम कर सकता है।) –
गॉसियन फ़िल्टर कम पास फ़िल्टर नहीं है? –
@ एएच। - हाँ, लेकिन यदि आप मूल छवि से गाऊशियन लोपास को घटाते हैं, तो आपको समकक्ष हाईपास फ़िल्टर मिलता है। यही "गॉसियन हाई पास" के रूप में जाना जाता है। (उस भाग के लिए कोड के ऊपर टिप्पणियों पर नज़र डालें।) –