2016-04-21 6 views
4

Ich scipy den convolve2d mit:Wie scipy convolve2d bei der Arbeit mit Bildern zu normalisieren?

for i in range(0, 12): 
      R.append(scipy.signal.convolve2d(self.img, h[i], mode = 'same')) 

Nach Faltung alle Werte in Größen von 10000s, aber bedenken, dass ich mit Bildern gerade arbeite, muß ich sie im Bereich von 0 bis 255 sein. Wie normalisiere ich es?

+0

Dies kann Ihnen Hinweise geben Sime: http://stackoverflow.com/questions/14765891/image-smoothing-in-python die maximale Finden und skalieren. Bitte überprüfen Sie die Image- und Kernel-Daten für weitere Informationen. – tfv

+0

Es ist ein 16,16 Kernel mit allen Werten zwischen 0-255. –

Antwort

0

Angenommen, Sie möchten in einem einzigen Bild normalisieren, können Sie einfach im_out = im_out/im_out.max() * 255 verwenden.

Sie können auch den Kernel oder das Originalbild normalisieren.

Beispiel unten.

import scipy.signal 
import numpy as np 
import matplotlib.pyplot as plt 
from skimage import color 
from skimage import io 


im = plt.imread('dice.jpg') 
gray_img = color.rgb2gray(im) 

print im.max() 

# make some kind of kernel, there are many ways to do this... 
t = 1 - np.abs(np.linspace(-1, 1, 16)) 
kernel = t.reshape(16, 1) * t.reshape(1, 16) 
kernel /= kernel.sum() # kernel should sum to 1! :) 

im_out =scipy.signal.convolve2d(gray_img, kernel, mode = 'same') 

im_out = im_out/im_out.max() * 255 

print im_out.max() 

plt.subplot(2,1,1) 
plt.imshow(im) 
plt.subplot(2,1,2) 
plt.imshow(im_out) 
plt.show() 

enter image description here

Verwandte Themen