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