JPG转换为4位彩色COE/文本文件



我一直在使用39805图像到coe转换器将256x256像素的24位总颜色jpg(每种颜色8位(转换为8位(总(灰度coe文件。我对源图像格式很灵活,但对目标格式化程序不灵活。我试图将jpg颜色转换为4位颜色(每个颜色通道4位(的COE文件,其中每行都是我的12位像素颜色(RGB(。原因是这些是在FPGA中创建块ram,带有12位总彩色管道。。。红色4位,蓝色4位,绿色4位(共12位(。

例如,输出文件(COE基本上只是一个文本文件(,一个纯白色字段将输出(此处为十六进制(:

000(下一行(000(下一行(000(下一行(000(下一行(…

fff(下一行(fff(下一行(fff(下一行(…

取决于反转。

如果有一种方法可以验证输出COE确实是rad的图像。我还假设使用img=img';将能够在必要时反转颜色。

% Image to text conversion 
% Read the image from the file
[filename, pathname] = uigetfile('*.bmp;*.tif;*.jpg;*.pgm','Pick an M-file');
img = imread(filename);
img = imresize((img),[256 256]);
[ row col p ] =size(img); 
% Next line for testing
%image(img); 
% Turns 8 bit into 4 bit (collapses colors - no good)
%img = img ./ 16; 
% Converts to 2 channel grascale
%if p == 3
%    img = rgb2gray(img);
%end 
% What does this do? Create a 65x65 array? Why?
rectImg = img(16:80,16:80); 
% noise add.  Why would he want to add noise?
%rectImg = imnoise(rectImg,'salt & pepper', 0.02); 
img(16:80,16:80) = rectImg;
image(img); 
% Image Transpose
%imgTrans = img'; 
% iD conversion
img1D = img(:); 
% Decimal to Hex value conversion
imgHex = dec2hex(img1D);
% New txt file creation
fid = fopen([filename '.coe'], 'wt');
% Hex value write to the txt file
fprintf(fid,'memory_initialization_radix=16;n');
fprintf(fid,'memory_initialization_vector=n');
fprintf(fid, '%xn', img1D);

% Close the txt file
fclose(fid);

通过标准化为4位(0-15(求解

% normalize to 0..15 per channel
img_12 = uint8(double(img) / 255.0 * 15.0);

最新更新