How to round (or convert) an array to integer?
69 ビュー (過去 30 日間)
古いコメントを表示
I need to first convert multiple images to an array of intensity value and then do some calculations. I need to round up each intensity in the array first before the calculations. I tried just I1_int = round(I1_int); but it did not work as "Undefined function 'round' for input arguments of type 'struct'." Any idea would be greatly appreciated! Thank you! Here is a portion of my code.
I1_int = regionprops(M, I1, 'MeanIntensity', 'Centroid'); %Intensities of first frame
if length(I)>1
I2_int = regionprops(M, I2, 'MeanIntensity', 'Centroid'); %Intensities of last frame
Final = cell2mat({I2_int(:).MeanIntensity});
Initial = cell2mat({I1_int(:).MeanIntensity});
Percent = 100*[(Final - I2_BG) - (Initial - I1_BG)]./ (Initial- I1_BG)
0 件のコメント
採用された回答
Image Analyst
2016 年 11 月 15 日
You need to call ceil() on the mean intensities, not on the measurement structure itself. Try this:
props = regionprops(M, I1, 'MeanIntensity', 'Centroid'); %Intensities of first frame
% Extract the mean intensities by themselves into a new array.
meanIntensities = [props.MeanIntensity];
% Round up to nearest integer.
I1_int = ceil(meanIntensities);
4 件のコメント
Image Analyst
2016 年 11 月 15 日
Walter's right. Did you even inspect what I1_int is in the workspace before you did the cell2mat() line? If you had you would have seen that I1_int is already a double vector, not a structure, so doing this I1_int(:).MeanIntensity would have thrown an error. Again, there's no need to do that. Don't over-complicate it!!
その他の回答 (1 件)
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!