У меня есть изображение в градациях серого и двоичная маска ROI на этом изображении. Я хотел бы выполнить операцию размытия на изображении в оттенках серого, но только в пределах маски. Прямо сейчас я размываю все изображение, а не просто удаляю элементы вне маски, но я не хочу, чтобы пиксели вне маски влияли на мою рентабельность инвестиций. Есть ли способ сделать это без создания пользовательской функции размытия?
в надежде получить что-то вроде:
import scipy
blurredImage = scipy.ndimage.filters.gaussian_filter(img, sigma = 3, weight = myMask)
@ stefan:
blur = 3
invmask = np.logical_not(mask).astype(int)
masked = img * mask
remaining = img * invmask
blurred = scipy.ndimage.filters.gaussian_filter(masked, sigma = blur)
blurred = blurred+remaining
Подход с расширением:
blur = 3
invmask = np.logical_not(mask).astype(int)
masked = img * mask
masked2 = scipy.ndimage.morphology.grey_dilation(masked,size=(5,5))
masked2 = masked2 *invmask
masked2 = masked + masked2
blurred = scipy.ndimage.filters.gaussian_filter(masked2, sigma = blur)