获取Matlab中Image的像素值的ASCII码

时间:2014-07-16 15:51:29

标签: image matlab image-processing

我使用以下代码行来获取图片:

if true
clc;
clear all;
close all;
nMod = 7 ;

%cover image

[FileName,PathName] = uigetfile('*.jpg','Select the Cover Image');
file = fullfile(PathName,FileName);
disp(['User selected : ', file]);
cover = imresize(imread(file),[128 128]);
cover = double(cover);
if ndims(cover) ~= 3
    msgbox('The cover image must be colour');
break;
end
figure;
subplot(1,2,1);
imshow(uint8(cover),[]);
title('Cover image');

我想将各种像素值的ASCII代码放入m * n数组中,然后将其打印到控制台中。有人可以帮帮我吗?我是matlab的新手..谢谢。

1 个答案:

答案 0 :(得分:0)

我要试一试。我你正在寻找3个字符串,每个字符串都是根据图像的一种颜色编码数字数据。

如评论中所述,您的问题形式不是很好。但是,它并没有一些评论所暗示的那么遥远。没有有意义的方式来讨论与像素相关的ASCII字符。但是,有一个较低级别的连接。 ASCII由两位十六进制数表示。 "像素"在MATLAB中,实际上只是一个双格式数字的[1x3]数组,范围从0.0到1.0。您可以将这些双格式数字缩放到256,然后将它们编码为16位整数,然后可以将其表示为十六进制数字。 (反过来,它可以表示为ASCII。)试试这个:

%// First, separate out each color from the main image.
R = cover(:, :, 1);
G = cover(:, :, 2);
B = cover(:, :, 3);

%// Now, perform the transform detailed above.
hexR = dec2hex(int16(R*256));
hexG = dec2hex(int16(G*256));
hexB = dec2hex(int16(B*256));

%// Finally, reshape the color arrays into a single row to form a string.
strHexR = reshape(hexR.', 1, []);    %'//Format 
strHexG = reshape(hexG.', 1, []);    %'//Format 
strHexB = reshape(hexB.', 1, []);    %'//Format 

%// You could stop here, as the data is encoded, but if you want it in ASCII...
%// Translate to ASCII
asciiHexR = char(sscanf(strHexR, ;'%2x')); 
asciiHexG = char(sscanf(strHexG, ;'%2x')); 
asciiHexB = char(sscanf(strHexB, ;'%2x')); 

%// Reshape to a string.
asciiStrHexR = reshape(asciiHexR.', 1, []);    %'//Format 
asciiStrHexG = reshape(asciiHexG.', 1, []);    %'//Format 
asciiStrHexB = reshape(asciiHexB.', 1, []);    %'//Format 

享受。如果您有任何问题,请告诉我。