永发信息网

关于matlab中的gray2ind函数

答案:4  悬赏:0  手机版
解决时间 2021-11-24 09:07
  • 提问者网友:姑娘长的好罪过
  • 2021-11-23 19:55
关于matlab中的gray2ind函数
最佳答案
  • 五星知识达人网友:思契十里
  • 2021-11-23 20:48
function [X, map] = gray2ind (I, n)

if (nargin < 1 || nargin > 2)
print_usage ();
elseif (nargin == 1)
n = 64;
endif

map = gray (n);

X = round (I*(n-1)) + 1;

endfunction
全部回答
  • 1楼网友:十鸦
  • 2021-11-23 22:01
function [X, map] = gray2ind (I, n)

if (nargin < 1 || nargin > 2)
print_usage ();
elseif (nargin == 1)
n = 64;
endif

map = gray (n);

X = round (I*(n-1)) + 1;

endfunction
  • 2楼网友:山河有幸埋战骨
  • 2021-11-23 21:54
比如一幅256级的灰度图Gray,图中的各像素值是0~255。
那么变成一幅16级的索引图Ind时,图中的各值是0~15。

gray2ind具体的实现过程是:
1.首先依据Gray的数据类型得到Gray的范围。这里由于Gray是uint8的,所以范围是[0 255]。取这个范围向量中的第二个值255;
2.然后依据你所需要的索引数16,计算sf = (16-1)/255; 得到sf=0.0588。(这一步可理解为要将原图变为16个级别的索引,则需要将原图各值等分成15份,sf为等分的间隔);
3.将Gray中的各像素值去乘以sf并取整,即可得到索引图Ind。如原来Gray中的值是156,那么乘以sf再取整就得到9。全部计算完毕后,可以看到Ind中的值都是0~15之间的。追问灰度图转索引图不是还同时生成了一个调色板么?请问这个调色板map是怎么来的呢?我是新手不好意思,问题比较多比较弱智,如果你不介意的话,可以给我QQ号么?追答比如这个代码:
I = imread('cameraman.tif');
[X, map] = gray2ind(I, 16);
imshow(X, map);

X就是最后的索引图,map就是色板。这里是将原图I由256级的灰度图变成16级的索引图。所以可以看到X中的值都是0~15,而0~15的计算过程参看上面的回答。

而对于色板,matlab中的色板是一个Mx3的矩阵,3表示rgb三个分量,每个分量的值是从0~1。
而对于上面的代码,由于生成了16级索引图,所以会将[0,1]的区间等间隔地分成16种变化,如下。
map =
0 0 0
0.0667 0.0667 0.0667
0.1333 0.1333 0.1333
0.2000 0.2000 0.2000
0.2667 0.2667 0.2667
0.3333 0.3333 0.3333
0.4000 0.4000 0.4000
0.4667 0.4667 0.4667
0.5333 0.5333 0.5333
0.6000 0.6000 0.6000
0.6667 0.6667 0.6667
0.7333 0.7333 0.7333
0.8000 0.8000 0.8000
0.8667 0.8667 0.8667
0.9333 0.9333 0.9333
1.0000 1.0000 1.0000
这样,显示图像的时候,X中的值是0的,其对应的颜色板rgb就是[0,0,0],值是15的,对应的颜色板rgb就是[1,1,1]。

总结一下,如果你需要将一个图由256级变成30级的索引图,主要是两步处理:
1、对于X,会按照之前的回答,计算sf = (30-1)/255,然后将索引图的值都是0~29.
2、对于MAP,会按照本次的回答,将0~1等间隔变成30种情况。

当然,你如果不希望使用gray2ind这种等间隔划分,也可以自己设计颜色板,比如:
I = imread('cameraman.tif');
[X, map] = gray2ind(I, 16);
map(:,2) = map(:,2).^2;
map(:,3) = sqrt(map(:,3));
figure,imshow(X,map);
上面r分量不变,g分量取平方,b分量开根号。会看到伪彩色。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯