Я хочу вычислить разницу двух гауссовских фильтров. Я попробовал несколько решений на Python, чтобы воспроизвести как можно больше и получить те же результаты, что и в Matlab. Но мне это не удалось.
sigma = 1.3300
Matlab:
DoGfilt = zeros(2*ceil(10*sigma)+1);
DoGfilt(ceil(end/2), ceil(end/2)) = 1;
DoGfilt = imgaussfilt(DoGfilt, [sigma sigma])-imgaussfilt(DoGfilt, 5*[sigma sigma]);
DoGfilt = DoGfilt - mean(DoGfilt(:));
Python:
filter_size = int(2 * np.ceil(10 * sigma)) + 1
# Create a 2D array with zeros
DoGfilt = np.zeros((filter_size, filter_size))
# Set the center element to 1
DoGfilt[int(np.ceil(filter_size / 2)), int(np.ceil(filter_size / 2))] = 1
# Apply Gaussian filters
DoGfilt1 = cv2.GaussianBlur(DoGfilt, (0, 0), sigma, sigma)
DoGfilt2 = cv2.GaussianBlur(DoGfilt, (0, 0), 5 * sigma, 5 * sigma)
# Subtract the two filtered images
DoGfilt = DoGfilt1 - DoGfilt2
# Subtract the mean value
DoGfilt = DoGfilt - np.mean(DoGfilt)
Было бы здорово получить здесь помощь, поскольку воспроизведение результатов имеет для меня решающее значение.
Вы можете просмотреть файл mat здесь: https: //tmpfiles.org/dl/10406695/dogfilt.mat
Чтобы загрузить файл mat в Python, выполните следующие действия:
from scipy.io import loadmat
DoGfilt = loadmat('./DoGfilt.mat')['DoGfilt']
Подробнее здесь: https://stackoverflow.com/questions/788 ... -to-python