首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将灰度JPEG转换为RGB JPEG

将灰度JPEG转换为RGB JPEG
EN

Stack Overflow用户
提问于 2016-06-21 19:13:09
回答 1查看 800关注 0票数 2

我有几个(实际上是几千个) jpg图像,它们有一个灰色的颜色空间,但是我想使用它们的程序要求它们在rgb中。是否有办法将jpg从单色转换为rgb,并保持其外观不变(即基本上使用rgb值来生成灰度图像)。

我在MATLAB中将图像作为2D矩阵,并尝试使用imwrite将图像强制到rgb,方法如下:

代码语言:javascript
复制
imwrite(image, 'rgb.jpg')

我认为这是可行的,因为imwrite的文档说jpg应该在rgb中,但是我仍然可以得到一个单色图像。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-21 19:18:56

当您将2D矩阵保存到JPEG中时,它仍然是灰度的。

代码语言:javascript
复制
imwrite(rand(100), 'test.jpg');

info = imfinfo('test.jpg');

%          FileSize: 6286
%            Format: 'jpg'
%             Width: 100
%            Height: 100
%          BitDepth: 8
%         ColorType: 'grayscale'    <---- Grayscale
%   NumberOfSamples: 1              <---- Number of Channels
%      CodingMethod: 'Huffman'
%     CodingProcess: 'Sequential'

size(imread('test.jpg'))
%   100   100

如果您希望得到的图像是真彩色(即RGB),则需要在第三维空间中重复矩阵3次才能创建分红、绿、蓝三种通道。我们对所有通道重复相同的值,因为任何灰度值都可以用相同的红色、绿色和蓝色的权重来表示。您可以使用repmat完成这一任务。

代码语言:javascript
复制
imwrite(repmat(im, [1 1 3]), 'rgb.jpg')

info = imfinfo('rgb.jpg');

%          FileSize: 6660
%            Format: 'jpg'
%             Width: 100
%            Height: 100
%          BitDepth: 24
%         ColorType: 'truecolor'      <---- True Color (RGB)
%   NumberOfSamples: 3                <---- Number of Channels
%      CodingMethod: 'Huffman'
%     CodingProcess: 'Sequential'


size(imread('rgb.jpg'))
%   100   100   3
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37952760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档