史蒂夫与MATLAB图像处理

图像处理的概念、算法和MATLAB

线性索引

上周我发了一个介绍逻辑索引。本周我想继续一个简短的讨论线性索引在MATLAB图像处理及其连接。

让我们先从一个小矩阵。打破传统,我将使用一个希尔伯特矩阵而不是幻方:

一个= hilb (5)
= 1.0000 0.5000 0.3333 0.2500 0.2000 0.5000 0.3333 0.2500 0.2000 0.1667 0.3333 0.2500 0.2000 0.1667 0.1429 0.2500 0.2000 0.1667 0.1429 0.1250 0.2000 0.1667 0.1429 0.1250 0.1111

突击测验:MATLAB表达式(17)的意思吗?

(17)
ans = 0.2000

MATLAB解释一个下标索引向量包含所有的值一个列顺序。所以(17)是一样的(2、4)

(2、4)
ans = 0.2000

这就是所谓的线性索引

到图像处理的连接是什么?假设一个我们的形象,一些先前的计算告诉我们,我们感兴趣的是在这些行和列坐标像素值:

行= (2 1 5);坳= [1 3 4];

我们可以在单个表达式中提取所需的像素值吗?让我们试一试:

坳(行)
ans = 0.5000 0.2500 0.2000 1.0000 0.3333 0.2500 0.2000 0.1429 0.1250

我们有九个值,并不是三个,所以肯定不是我们正在寻找。MATLAB计算坳(行)的子矩阵一个由指定的行和列的十字路口。

而不是索引到一个使用行和列下标,我们需要使用一个下标索引。

下面是如何从row-column下标转换成线性指数:

M =大小(1);idx = M * (col - 1) +行
idx = 2 11 20

表达式(idx)拿出我们想要的三个值:

(idx)
ans = 0.5000 0.3333 0.1250

或者我们可以分配给这些元素:

(idx) =正无穷
0.2500 - 0.2000 = 1.0000 - 0.5000正正0.3333 0.2500 0.2000 0.1667 0.3333 0.2500 0.2000 0.1667 0.1429 0.2500 0.2000 0.1667 0.1429 0.1250 0.1111 0.2000 0.1667 0.1429正无穷

的函数sub2ind(“下标”“指数”)ind2sub之间来回转换row-column下标和线性指数。

idx = sub2ind(大小(A)、行、坳)
idx = 2 11 20
[r、c] = ind2sub(大小(A), idx)
r = 2 1 5 c = 1 3 4

的详细图像处理实例说明线性索引,看看这些以前的帖子:




使用MATLAB®7.5发表

|
  • 打印
  • 发送电子邮件

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。