はい、最初にマスクを適用できますが、これは真剣にサブパルスの結果をもたらします。
import numpy as np
import matplotlib.pyplot as plt
import scipy
from skimage import feature
# Create image
image = scipy.misc.face(gray=True)
plt.figure()
plt.imshow(image, cmap='gray')
plt.title('image')
# Create a simple mask
x, y = np.mgrid[:image.shape[0], :image.shape[1]]
mask = (x > 200) & (x < 500) & (y > 300) & (y < 700)
plt.figure()
plt.imshow(image * mask, cmap='gray')
plt.title('masked image')
# Find edges with both methods
edges1 = feature.canny(image, sigma=3)
edges1 *= mask
plt.figure()
plt.imshow(edges1, cmap='gray')
plt.title('Mask then find edges')
masked_image = image * mask
edges2 = feature.canny(masked_image, sigma=3)
plt.figure()
plt.imshow(edges2, cmap='gray')
plt.title('Find edges then mask')
これらの結果を与える:
たとえば、次のコードを検討しますが、マスク場合は、エッジを適用する前にどのように、
をお知らせこの奇妙なフレームを取得します。これは、マスキングが最初からそこになかった新しいエッジを作成するためです。
あなたはまずマスクを適用しますか?あなたがcannyの入力でマスクされていないピクセルを黒くすると、マスクされたボーダーで多くのエッジが得られます。あなたが望むものであるかどうかは分かりません... – Micka