我有一张图片。我有一个滑动窗口穿过这个图像,滑动窗口有一个"框架"。窗口和框架都由矩形[x y w h]定义。我知道窗口包含在框架内(可能共享边缘),但我不能假设它的位置。例如,我需要得到框架中所有东西的标准偏差。
为了可视化,假设我有一个窗口(字母字符)和一个框架(数字字符)。我有[x y w h]定义它们中的每一个。我知道窗户在框架中。如何获得JUST数字字符的stdev?
1 8 3 8 2 0
a b c 5 2 8
c a b 3 9 9
a c b 0 5 2
9 6 8 3 4 1
注意:实际上这是一张图片,所以一切都是数字的。我只是使用字母字符来区分窗口和框架。
答案 0 :(得分:0)
如果您知道框架内窗口的行和列范围,那么逻辑索引将是一种方法。一个独立的例子:
frameSize = [5, 6]; % outer [width, height] of frame
windowSize = [3, 3]; % [width, height] of window
windowLocation = [2, 1];% [row, column] of top left element of window
windowRowRange = windowLocation(1):(windowLocation(1)+windowSize(1)-1);
windowColRange = windowLocation(2):(windowLocation(2)+windowSize(2)-1);
% Generate example data: make the 'frame' numbers negative
frame = unifrnd(0,1,frameSize);
frame(windowRowRange, windowColRange) = unifrnd(-1,0,windowSize);
disp('frame:'); disp(frame);
% Generate logical indexes for 'inside window'
insideWindow = zeros(frameSize);
insideWindow(windowRowRange, windowColRange) = 1;
% Take standard deviation of only the outer frame
std(frame(~insideWindow));
输出:
frame:
0.9961 0.0046 0.3998 0.1818 0.5797 0.3510
-0.8767 -0.5827 -0.0552 0.2638 0.5499 0.5132
-0.8161 -0.9503 -0.5091 0.1455 0.1450 0.4018
-0.7600 -0.0973 -0.5107 0.1361 0.8530 0.0760
0.9619 0.0844 0.9106 0.8693 0.6221 0.2399
std:
0.3234
实际数字会有所不同,因为我没有播种随机数。