Voici le code que je utilise:Pourquoi ai-je des cadres noirs dans cette image de montage?
function [filterResponses] = extractFilterResponses(img, filterBank)
% Extract filter responses for the given image.
% Inputs:
% img: a 3-channel RGB image with width W and height H
% filterBank: a cell array of N filters
% Outputs:
% filterResponses: a W x H x N*3 matrix of filter responses
if (~isa(img, 'double'))
img = double(img);
end
if (size(img, 3) == 1)
img = repmat(img, [1 1 3]);
end
img = img./255;
[L, a, b] = RGB2Lab(img(:, :, 1), img(:, :, 2), img(:, :, 3));
filterResponses = zeros(size(img,1), size(img, 2), length(filterBank)*3);
for k = 1:length(filterBank)
L = imfilter(L, filterBank{k}, 'same', 'conv', 'replicate');
filterResponses(:, :, k*3-2) = L;
a = imfilter(a, filterBank{k}, 'same', 'conv', 'replicate');
filterResponses(:, :, k*3-1) = a;
b = imfilter(b, filterBank{k}, 'same', 'conv', 'replicate');
filterResponses(:, :, k*3) = b;
end
end
La fonction ci-dessus applique un filtre à la fois d'un ensemble de 20 filtres sur chacun des L * a * b couches de l'image RVB donnée.
Le script suivant est utilisé pour exécuter la fonction:
img = imread('sun_advbapyfkehgemjf.jpg');
filterBank = createFilterBank();
filteredImg = extractFilterResponses(img, filterBank);
filteredImgCell = cell(20,1);
for k = 1:length(filterBank)
filteredImgCell{k} = cat(3, filteredImg(:, :, k*3-2), filteredImg(:, :, k*3-1), ...
filteredImg(:, :, k*3));
filteredImgCell{k} = repmat(filteredImgCell{k}, [1 1 1 1]);
end
montage(cat(4, filteredImgCell{:}), 'size', [4 5]);
Ce script concatène L * couches * b de la matrice filterResponses
et repmats ensuite l'image pour ajouter une quatrième dimension à utiliser dans la fonction de montage et est stocké dans une cellule. La cellule est utilisée dans la fonction de montage.
La sortie que je reçois est comme suit:
Pourquoi le reste des cadres apparaissent en noir? Je sais qu'ils sont là parce que si je multiplie chaque image avec dis 10, je peux voir quelques images de plus. Donc, doit être quelque chose à voir avec la normalisation?
Ce fut probablement le premier cas, mais je corrige les deux cas. Je vous remercie! :) – xertzer