Matlab覆盖多个surf / imagesc图

时间:2014-01-03 13:46:52

标签: image matlab merge

我有一组多个冲浪或图像c图,它们有不同的颜色图,我希望最终的图是它们合并的结果:surf_final = \sum_i surf_i

第一个hic是多个彩色地图,它是通过instructions来解决的。颜色没有混合,而是硬分离。

期望的结果是两种颜色的混合而不是硬分离。一种解决方案是将每个surf或imagesc转换为matlab rgb图像,然后将它们添加到一起:rgb_f = rgb_1 + rgb_2, imshow(rgb_f)

这种方法的问题在于尺度丢失,各种表面被重新缩放到相同的尺寸。一种选择是强制缩放一致。

我正在寻找的理想解决方案是混合多个冲浪地块,同时保留比例和轴信息,这样的其他项目可以很容易地绘制在合并的表面之上。任何帮助将不胜感激。

修改

合并色图cmap = [map1; map2]的结果:

enter image description here

Z1Z2的{​​{1}}和surf1转换为rgb的结果 然后添加它们: enter image description here

(04-01-2014)我已经做了一个有用解决方案的例子,但只有当人们知道每个冲浪的概率密度函数被绘制时。对于每次冲浪,我分别为surf2colormap设置了cmap_p1cmap_p2pdf1个人。我计算了两个meash grides pdf2Z1的可能性。然后我计算了混合系数Z2并创建了一个RBG图像,如下所示:

alpha = Z1 ./ (Z1 + Z2)

1 个答案:

答案 0 :(得分:0)

我有这个工作,如果有人的水平高于10,如果你能发布密度(1)和(2),我会很高兴:链接http://rapidshare.com/share/5E05B150DCBD4D50074452F68FDF13D3

我的解决方案:

我有一组密度函数和相关联的色图{p(x),cmap} ^ N和一个指定的 meash网格X = Y = linspace(min,max,spacing)。

1)在循环中,我为每个pdf p_i(x)

计算CData_i

2)我将CData转换为RGB图像,I =重塑(cmap(CData(:),:),[间距3])每个pdf_i

3)基于CData为I计算混合系数f(对每个p_i(x)做他的:

 f(:,i) =  CData ./ max(CData(:)); (i is for the ith pdf)
 f = f./repmat(sum(f,2),1,number_pdfs);

原因是最终图像将是所有图像的线性加权组合,I_final = \ sum_i f_i * I_i和\ sum_i f_i = 1应保持。

4)最终for循环合并所有RGB图像,Is = {I},一起

表示i = 1:nbGMMs

I = I + repmat(reshape(fractions(:,i),spacing,spacing),[1 1 3]) .* Is(:,:,:,i);

退回是必须在同一个meashgrid 上评估所有密度函数,使得像素(x,y)坐标对应于CData矩阵中的相同列条目。