我使用 120x120 矩阵和surf
函数获得了下图。
有没有一种简单的方法可以让不同颜色之间的线条看起来更平滑?
首先,surf
可能不是显示 2D 图像的最佳方式 - 如果您实际上不需要高度信息,imagesc
则可以正常工作。更好的是,它不会显示六边形之间的不同颜色的线条,因为它不会通过交叉点的颜色图。
但是,无论您采用哪种方法,低分辨率位图都不会自动转换为“任意”分辨率的矢量图形 - 无论如何,如果您使用该图允许您检查哪种组合,您可能不希望这样(x,y)
您以给定的值获得。
有三种方法可以使您的图像更漂亮 - (1) 分割六边形,并用于patch
创建矢量图形图像。(2) 用 对图像进行上采样imresample
。(3) 创建一个 RGB 图像并分别平滑每种颜色以获得更柔和的过渡:
%# assume img is your image
nColors = length(unique(img));
%# transform the image to rgb
rgb = ind2rgb((img+fliplr(img)),jet(nColors)); %# there are much better colormaps than jet
%# filter each color
for i=1:3,rgbf(:,:,i)=imfilter(rgb(:,:,i),fspecial('gaussian',9,3),'replicate');end