【发布时间】:2016-07-06 12:41:00
【问题描述】:
我有一个灰度的建筑物图片文件 (.png),我有一个脚本,该脚本可以生成一个网格图,其中包含有人在白天呆过的建筑物的哪个部分的颜色强度。建筑物被划分成一个 3x3 的网格,地块也相应地对应起来。如何将其绘制成灰度图像并对其进行着色以使其与 3x3 绘图相匹配?我很想遵循这种覆盖技术,但不断出错:http://blogs.mathworks.com/steve/2009/02/18/image-overlay-using-transparency/
我的网格绘图脚本:
Data = [1:1:9; 1 2 3 4 5 6 7 8 9; 1 2 3 4 5 6 7 8 9 ;1 2 3 4 5 6 7 8 9;1 2 3 4 5 6 7 8 9];
M = zeros(3,3);
for ii = 2:size(Data,1)
plot(ii-1)
M(1:end) = Data(ii,:);
imagesc(M)
colormap jet
shading flat %for an exact result
% shading interp %for a smooth result
figure
end
有什么想法或者这不可能吗?我确实有图像处理工具箱,如果有其他程序更适合这个,我很乐意试一试。
编辑:
这是我尝试使用的代码,以使有关透明度的博客文章正常工作:
BaseImage = imread('buildinglayout.png');
imshow(BaseImage, 'InitialMag', 'fit');
GridPlot = imread('5.png'); %output of grid plot generating script
imshow(GridPlot,'InitialMag','fit')
M(1:end) = Data(ii,:);
h = imshow(M);
hold off
set(h,'AlphaData', GridPlot);
我得到的错误,尽管我愿意打赌,不管这个错误如何,我根本没有正确地勾勒出覆盖:
Error using set
Bad property value found.
Object Name : image
Property Name : 'AlphaData'.
Error in OverlayPlots (line 13)
set(h,'AlphaData', GridPlot);
【问题讨论】:
-
你的错误是什么?也给我们这部分代码。
-
@obchardon 编辑了帖子以显示错误以及我尝试调整博客帖子代码。
-
AlphaData 应该与您的图像的 CData 大小相同,这就是 set 所抱怨的。
-
@RandomGuy 如何确保网格图的大小与建筑布局的大小相同?网格是 3x3 的矩形,但建筑物 png 是不规则形状。使用图像处理工具箱,我可以进行边缘检测并仅隔离建筑部分,并获得这些边界,但我如何直接绘制到该空间?
-
imfilll 或仅填充功能可以在这里工作吗? mathworks.com/help/matlab/ref/fill.html
标签: matlab image-processing plot