有一个固定大小为256 * 256的图像A.我能够找到水平和垂直相邻像素之间的相关性 . 但我不明白如何从图像中随机选择4096对两个对角相邻的像素,计算它们的相关系数,然后绘制这些对角相邻像素的分布 .
xed = A(1:end-1,1:end-1); % All but the last row and column
yed = A(2:end,2:end); % All but the first row and column
randIndex = randperm(numel(xed)); % A random permutation of the integers from 1 to numel(x)
randIndex = randIndex(1:4096); % Pick the first 4096 indices
xRand = xod(randIndex); % 4096 random values from x
yRand = yod(randIndex); % The corresponding 4096 values from y
% Compute the Correlation coefficient of x and y
red_xy = corrcoef(xRand(:),yRand(:));
相同的算法用于加密彩色和灰度图像 . 对于彩色图像,它分别应用于RGB平面,仅用于灰度等级一次 . 在彩色图像的情况下获得对角线相关系数几乎为零 . 在灰度级中,我想知道我在计算相关系数时是否出错 .
2 回答
(这最初是在(我)的评论中,但事实证明它实际上是答案 . 我将它变成一个可以接受的实际答案,例如https://meta.stackexchange.com/questions/54718/how-to-handle-questions-which-are-answered-in-the-comments . )
问题是您的部分数组是这样定义的
名称为
xed
和yed
,但是像这样使用名称为
xod
和yod
. 据推测,你有其他变量,在其他地方定义,这些名称,这就是为什么你的代码做错了而不是失败明显的错误 .这里有一个更普遍的道德:你可以通过给你的变量更长,更多信息和更独特的名称来减少这种错误的风险,这些名称不能通过单字符拼写错误相互转换:-) .
我希望这是真的,每个人都很有帮助 . 对不起我的英语 .