用MATLAB进行图像处理

图像处理概念,算法和MATLAB

将彩色图像转换为加权邻接矩阵

一个MATLAB答案问题今天早些时候吸引了我的注意。有着有一个加权邻接矩阵的伪彩色图像:

他有这张色度图

Borys想知道如何从这幅图像中计算真实的邻接矩阵,知道颜色尺度代表范围[0,5]。

这个问题对我来说很有趣,我想试一试。

image_url =“//www.tatmou.com/matlabcentral/answers/uploaded_files/410520/image.png”;scale_url =“//www.tatmou.com/matlabcentral/answers/uploaded_files/410525/image.png”;A = imread(image_url);

以下是我计划的方法:

1.使用白色方框确定邻接矩阵单元格的坐标网格。

2.从步骤1中找到的位置提取颜色。

3.对于每个提取的颜色,找出该颜色与刻度中的颜色之间的最小色差。

4.使用线性插值来确定对应邻接矩阵单元格的权重值(在0到5之间)。

我做的第一件事是使用像素区域工具检查白色方块是否完全是白色([255,255,255])。

imshow impixelregion

他们确实是。

接下来,我将计算一个与白色方块对应的掩模图像。

Mask = all(rgb ==重塑([255 255 255],1,1,3),3);imshow(面具)

乍一看,白色方块似乎没有相互接触,但为了确定,让我们稍微侵蚀一下它们。

Mask2 = imerosion (mask,ones(3,3));imshow (mask2)

现在,让我们找出每个白色方块的中心。

T =区域道具(“表”mask2,“重心”);头(T)
ans = 8×1 table Centroid ________________ 5.5 5.5 19 19 32 32 44.5 45 57.5 57.5 70.545 70.545 83 83 96 96

将质心坐标四舍五入到整数位置。

m = round(T.Centroid(:,2));n = round(T.Centroid(:,1));

我们再检查一下位置

图imshow(A)轴([n(1) n(6) m(1) m(6)]) hold住Q = 2:5R = 2:5 x = n(R);Y = m(q);情节(x, y,“o”“MarkerFaceColor”“w”“MarkerEdgeColor”“k”)文本(x, y,”(“+ q +”、“+ r +")"...“HorizontalAlignment”“中心”...“VerticalAlignment”“底”结束结束持有

看起来不错。现在,让我们提取其中一种颜色,并将其与刻度上的位置匹配。

读取比例图像并将其更改为Mx3颜色值矩阵。

Scale = imread(scale_url);刻度=刻度(1,:,:);Scale =重塑(Scale,[],3);

抓取邻接矩阵图像(5,3)单元格中的颜色。

c = A(m(5),n(3),:);

显示颜色

图像(c)

现在在颜色刻度中找到最接近的颜色。我将使用deltaE,我在我的30 - 2020年10月,职位

C =重塑(C,1,3);D = deltaE(repmat(c,size(scale,1),1), scale);

让我们再次检查一下我们的工作。我希望有一个明确的最小值,可以识别出刻度上最接近的颜色。是这样吗?

情节(D)

看起来不错。

的最小值是多少D,在哪里发生?

[D_min,idx] = min(D);D_min
D_min = single 3.9335
idx
Idx = 341

现在我们可以使用插值来获得这个单元格的邻接单元格权值。回想一下,权重范围从0到5。

W = interp1([1 size(scale,1)], [0 5], idx)
W = 3.7363

我们有了计算的所有部分。现在,让我们计算每个单元格的权值。

Q = 1:长度(m)R = 1:长度(n)跳过对角线上的单元格。如果q ~= r c = A(m(q),n(r),:);C =重塑(C,1,3);C = repmat(C,size(scale,1),1);D = deltaE(c,scale);[D_min,idx] = min(D);Aw(q,r) = interp1([1 size(scale,1)],[0 5],idx);结束结束结束

最后,我们可以显示我们计算的加权邻接矩阵。除了对角线元素(使用此过程将显示为蓝色)之外,它看起来应该与我们开始时的图像非常相似。

imshow (Aw, []) colormap(规模)

太有趣了!




发布与MATLAB®R2020b

|
  • 打印
  • 发送电子邮件

评论

如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。