【问题标题】:Converting array into grayscale in matlab在matlab中将数组转换为灰度
【发布时间】:2013-04-20 09:57:36
【问题描述】:

我正在尝试以灰度绘制一组数据。但是,我得到的图像似乎总是蓝色的。

我有一组数据,albedo,范围从[0, 0.068],即1X1 double

我的代码是:

 for all px,py
    albedoMax = 0.0679; albedoMin = 0;
    out_im(px,py) = 1/(albedoMax-albedoMin)*(albedo - albedoMin);
    imshow(out_im);
    drawnow;
 end

基本上px,py 是我必须迭代的图像坐标,公式试图将[0, 0.068] 的输入范围映射到[0 1]。但是,通过运行此代码,我注意到输出始终是蓝色的。我想知道出了什么问题。

感谢您的帮助。

【问题讨论】:

  • 这是您的实际 Matlab 代码还是伪代码?
  • 除了“for”和“end”部分,其他都是实际的

标签: image matlab plot grayscale


【解决方案1】:

你不能使用 rgb2gray 函数吗?

【讨论】:

  • 我的反照率尺寸与 rgb 数组不匹配。我应该把它连接起来让它看起来像一个吗?
  • 要获得灰度值,您需要将像素的红色、绿色和蓝色值乘以某些常数。然后将它们相加得到灰度值。
【解决方案2】:

您正在制作的是 RGB 图像的一层。 如果您正在创建具有恒定颜色的均匀蓝色图像,则归一化是错误的。但如果只是蓝色而不是灰色的问题,那么只需使用以下方法进行转换:

ImGray = rgb2gray(Im);

不要忘记像网格/网格一样分布像素,以填充所有图像而不仅仅是其中的一部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-03
    • 1970-01-01
    • 1970-01-01
    • 2014-09-11
    • 2013-08-07
    • 1970-01-01
    相关资源
    最近更新 更多