'improfile' is a missing function in octave, what other options could I use to make my loop works?
3 ビュー (過去 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!