You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
1.3 KiB
36 lines
1.3 KiB
function myAffinityMat = Image2Graph (imIn)
|
|
%Image2Graph produces a graph, in the form of a matrix, from an image
|
|
% Usage myAffinityMat = Image2Graph (imIn), where:
|
|
% Inputs
|
|
% - imIn is the input image
|
|
% Output
|
|
% - myAffinityMat is the graph produced
|
|
|
|
imageWidth = size(imIn, 2);
|
|
imageHeight = size(imIn, 1);
|
|
imageChannels = size(imIn, 3);
|
|
|
|
%myAffinityMat = 1 / exp(norm(imIn(:, :)));
|
|
myAffinityMat = zeros(imageWidth * imageHeight, imageWidth * imageHeight);
|
|
|
|
for row = 1:imageHeight
|
|
for column = 1:imageWidth
|
|
diff = imIn - imIn(row, column, :);
|
|
%diffT = permute(diff, [2 1 3]);
|
|
|
|
dist = sum(diff .^ 2, 3) .^ 0.5;
|
|
|
|
% dist = zeros(imageWidth, imageHeight);
|
|
% for channel = 1:imageChannels
|
|
% dist = dist + sqrt(sum (diff(:, :, channel) * diffT(:, :, channel)));
|
|
% dist = dist + sqrt(diff(:, :, channel) * diffT(:, :, channel));
|
|
% end
|
|
|
|
som = 1 ./ exp(dist);
|
|
som2 = reshape(som, 1, []);
|
|
som2 = reshape(som.', 1, []);
|
|
|
|
myAffinityMat((row - 1) * imageWidth + column, :) = reshape((1 ./ exp(dist), 1, []);
|
|
end
|
|
end
|
|
end
|
|
|