正文

图象格式转换2008-04-19 14:45:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/vfdff/34321.html

分享到:

图像格式的多样性,给我们带来了方便,也同样带来了不方便。raw,pgm,bmp,jpg我需要的格式不断地变,变,变...

Raw的主要原理

Raw实际上是各个相机厂商自己的原始数据格式,也是点的集合。由于每个厂商,其格式不一样,所以兼容性肯
定是大大的差。但是Raw由它独特的好处:
1,无失真
2,保留了CCD捕捉的最原始数据,如果采用好的转化软件,可以得到比相机缺省转化要好的图像!专业摄影推荐。
3,所有EXIF都有,原始信息嘛,不过不一定能很容易读出来(格式不兼容)
4,里面的数据跟CCD的模数转化深度(数字信号的量化精度)一样,一般都在普通图像的8位以上,譬如12bit或
16bit。也就是说精度高。当Raw转化到JPG的时候,一般精度就立刻降为8bit,Raw一般也会用无失真的压缩办法压缩一下。
       raw是最直接也容易处理的图像,处理像素的信息,从文件中得不到图像的其他信息了,比如图像的大小,色彩等。虽然直观,还是使用的不多。
      由raw转化为其他图像的最简单的方法就是利用matlab来处理,读数据到二维矩阵,然后以需要的格式再写道文件里就行了。由其他的文件转为raw 的格式也很简单,把图像以正确的格式读到矩阵中,把该矩阵写到文件里就ok了。
/////////////////////////////////////////////////////////////////////////////////////////////////////////
rh = fopen('test.raw','rb');
image = fread(rh,'uint8');
fclose(rh);
imagesize  = sqrt(size(image(:,1)))
for i=1:imagesize
    for j= 1:imagesize
        in(i,j) = uint8(image((i-1)*imagesize(1) +j));
    end
end
imwrite(in,'test.bmp','bmp');
/////////////////////////////////////////////////////////////////////////////////////////////////////////
in=imread('test.pgm','pgm');
fid=fopen('test.raw','wb');
fwrite(fid,in,'uint8');
fclose(fid);
////////////////////////////////////////////////////////////////////////////////////////////////////////

查找了jpg格式图像的原理,感觉想从这种格式(DCT变换+压缩)恢复到图像最原始的raw格式好像是不可能的了。

阅读(3422) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册