获取忽略内部矩阵的矩阵统计信息

时间:2016-09-13 00:43:25

标签: matlab

我有一张图片。我有一个滑动窗口穿过这个图像,滑动窗口有一个"框架"。窗口和框架都由矩形[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

注意:实际上这是一张图片,所以一切都是数字的。我只是使用字母字符来区分窗口和框架。

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

实际数字会有所不同,因为我没有播种随机数。