首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >每个像素的样本协方差矩阵(取相邻像素)并应用于整个图像维数

每个像素的样本协方差矩阵(取相邻像素)并应用于整个图像维数
EN

Stack Overflow用户
提问于 2015-12-07 10:37:45
回答 1查看 715关注 0票数 0

下面是单个像素的样本协方差矩阵的代码。我已经为(1,1)取了10个相邻像素,包括叠加图像的第一个像素。y_1,y_2,y_3和y_4是我的四张照片。如果问题不清楚,请告诉我。

代码语言:javascript
运行
复制
y_cal=cat(3, y_1, y_2, y_3, y_4);

Y_new=reshape(y_cal, [5586, 4]);

Y_new_cov=Y_new(1:10,:);

Y_new_cell = arrayfun(@(ri) Y_new_cov(ri, :)', 1:10, 'UniformOutput', 0);

Y_new_cell_tr= cellfun(@ctranspose, Y_new_cell , 'UniformOutput', 0);

Y_covariance_initial = cellfun(@mtimes, Y_new_cell,Y_new_cell_tr, 'UniformOutput', 0);

Y_covariance_final = Y_covariance_initial{1,1}+Y_covariance_initial{1,2}+Y_covariance_initial{1,3}+Y_covariance_initial{1,4}+Y_covariance_initial{1,5}+Y_covariance_initial{1,6}+Y_covariance_initial{1,7}+Y_covariance_initial{1,8}+Y_covariance_initial{1,9}+Y_covariance_initial{1,10};

在这里,10个像素是手动采取的协方差实现。图像维数为114×49。最后生成的协方差矩阵是114×49×4×4×4。我应该如何应用一个方形窗口来选择目标像素的相邻像素,并继续其他像素的选择?

请提供必要的帮助,因为我花了两个月的时间来写这段代码是从一个非编码的背景。您的帮助将不胜感激。

问候

EN

回答 1

Stack Overflow用户

发布于 2015-12-07 13:04:52

标准的方法是使用nlfilter。对于这个函数,您提供您的函数(计算协方差的函数),它将应用于您大小的滑动窗口。例如:

代码语言:javascript
运行
复制
octave> img = rand (64, 64);
octave> img_cov = nlfilter (img, [10 10], @(x) cov (x(:)));

将对大小为零的每个滑动块(在将原始图像填充为零后)调用cov (x(:)),并用这些结果返回大小为[64 64]的数组(与输入图像相同)。由于您使用的是八度,您的窗口和图像可能有任意数量的尺寸。所以你可以这么做:

代码语言:javascript
运行
复制
octave> img = rand (64, 64, 3, 4);
octave> img_cov = nlfilter (img, [10 10 3 4], @(x) cov (x(:)));

另一种方法是将n维图像中的所有滑动窗口都放到列中(使用im2col),使用将沿着每一列工作的函数,然后使用col2im构建图像。这可能会更快,也可能不会更快,但如果你能绕着它转,你就会有更大的灵活性:

代码语言:javascript
运行
复制
octave> img = rand (64, 64);
octave> im_cols = im2col (img, [10 10], "sliding");
octave> im_cov = you_nd_cov_function (im_cols);
octave> img_cov = col2im (cov (im_cols), [1 1], [55 55], "sliding");
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34131544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档