'improfile' is a missing function in octave, what other options could I use to make my loop works?
4 次查看(过去 30 天)
显示 更早的评论
imshow(matrix(:,:,1))
%identify axes
[x, y] = ginput(2);
% preallocate matrices
cog = zeros(size(matrix,3),1);
% loop start
for i = 1:size(matrix,3)
I = matrix(:,:,i);
%what to do to make this code works in octave
test = improfile(I,[x(1) x(2)],[y(1) y(2)]);
cog(i) = sum((1:length(test)).*test')/sum(test);
% loop end
end
scog = (cog - min(cog)) / (max(cog) - min(cog));
4 个评论
Jan
2022-7-28
@Bilal Alsharif: Do you see the set of icons above the field for typing the text in the forum? They help you to apply a nice formatting. I've formatted the code for you in the question already. Please use these formatting tools to distinguish text, Matlab code and programs.
Jan
2022-7-29
@Image Analyst: I've re-opened the question. Although Octave is off-topic, the answer works for Matlab users without the Image Processing Toolbox.
回答(1 个)
Jan
2022-7-28
The command interp2(I, 2) does not consider the selected line. Better:
n = ceil(norm([diff(x), diff(y)])); % A rough estimation of number of points
test = interp2(I, 2, linspace(x(1), x(2), n), linspace(y(1), y(2), n));
1 个评论
Walter Roberson
2022-7-28
improfile figures out whether the row difference is greater than the column difference, and does the interp2 along the longer dimension.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Octave 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!