matlab 对原始图像灰度级压缩,将Gray量化成16级 下面的这个代码是啥意思 有没有会matlab的
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab 对原始图像灰度级压缩,将Gray量化成16级 下面的这个代码是啥意思 有没有会matlab的相关的知识,希望对你有一定的参考价值。
为了减少计算量,对原始图像灰度级压缩,将Gray量化成16级
%--------------------------------------------------------------------------
for i = 1:M
for j = 1:N
for n = 1:256/16
if (n-1)*16<=Gray(i,j)&Gray(i,j)<=(n-1)*16+15 //主要是这一块这个&是表示并且的意思么
Gray(i,j) = n-1;
end
end
end
end
if isa(im_mat,'uint8')
im_mat = floor(im_mat/255*A-1);
end
本题,则为
if isa(im_mat,'uint8')
im_mat = floor(im_mat/255*15);
end
即可本回答被提问者和网友采纳
matlab中怎么把图像变成灰度图
>> I=imread('D:\\Lena.jpg');
>> x=rgb2gray(I);
>> figure(1);
>> subplot(121);
>> imshow(I);
>> title('原始图像');
>> subplot(122);
>> imshow(x);
>> title('灰度图像');
彩色图像是RGB,直接用rgb2gray
MATLAB 并没有自带gray2rgb
灰度图像 是个 N x M 矩阵。 N 和 M 为坐标,存储的数值是灰度深浅强度。RGB 为 N x M x 3 的矩阵。N 和 M 为坐标,附带的 3 是 [红,绿,蓝] 三色,数值各取 0-1.0 之间。转换上,如果灰度图像为 1024 x 768 大小,则要建立一个 1024 x 768 x 3 的矩阵。再在每一像素上添上颜色。例如,rgb_image(2, 4, :)= [0 1 1] %(坐标(2,4)=浅蓝色)
为了进行并行处理。我将512*512 的矩阵分成了64*64 的独立小块,并存至对应的文件中。
for i=1:64:449
for j=1:64:449
y=x(i:i+63,j:j+63);
h=y';
a=(i-1)/64+1;
b=(j-1)/64+1;
sload=['fid=fopen(''x' num2str(a) num2str(b) '.txt'',''wt+'')'];
eval_r(sload);
fprintf(fid, 'M\\t', h);
fclose(fid);
end
end
参考技术A bmp的图像是彩色的,也就是说有rgb三个波段,读出的图像数据是一个m*n*3的数组,如果想把它变成灰度图像的,只要分离出任意rgb中的一个分量即可,例如你的图像是1.bmp,x=imread('1.bmp');imshow(x);
y=x(:,:,1);
imshow(y);就可以了,不知道你是想怎样把图像变成灰度的,如果三个分量都想要的话,做个计算也可以的,例如把rgb做个平均;y=1/3*x(:,:,1)+1/3*x(:,:,2)+1/3*x(:,:,3);imshow(y);
以上是关于matlab 对原始图像灰度级压缩,将Gray量化成16级 下面的这个代码是啥意思 有没有会matlab的的主要内容,如果未能解决你的问题,请参考以下文章