【发布时间】:2014-08-29 20:40:22
【问题描述】:
假设我有以下代码:
clc
clear
band1 = imread('C:\Users\sepideh\Desktop\DrAkhundzadeh\Bands\band1.tif');
band2 = imread('C:\Users\sepideh\Desktop\DrAkhundzadeh\Bands\band2.tif');
band3 = imread('C:\Users\sepideh\Desktop\DrAkhundzadeh\Bands\band3.tif');
band4 = imread('C:\Users\sepideh\Desktop\DrAkhundzadeh\Bands\band4.tif');
band5 = imread('C:\Users\sepideh\Desktop\DrAkhundzadeh\Bands\band5.tif');
band7 = imread('C:\Users\sepideh\Desktop\DrAkhundzadeh\Bands\band7.tif');
Vegetation = band4-band3;
Oxide = band3-band1;
Hydroxyl = band5-band7;
%Normalize
NormalizedVegetation = ( Vegetation - min(min(Vegetation)))*255/(max(max(Vegetation)) - min(min(Vegetation)));
NormalizedOxide = ( Oxide - min(min(Oxide)))*255/(max(max(Oxide)) - min(min(Oxide)));
NormalizedHydroxyl = ( Hydroxyl - min(min(Hydroxyl)))*255/(max(max(Hydroxyl)) - min(min(Hydroxyl)));
FalseColor(:,:,1) = NormalizedVegetation;
FalseColor(:,:,2) = NormalizedOxide;
FalseColor(:,:,3) = NormalizedHydroxyl;
RGBIMAG = uint8(FalseColor);
imshow(RGBIMAG);
我的问题在于这条线:
RGBIMAG = uint8(FalseColor);
这会导致所有图像变暗。如何在不改变元素的情况下告诉 matlab 3 维矩阵的每个级别是 RGB 图像的不同波段。
【问题讨论】:
-
提示:
min(x(:))比min(min(x))更易读(和写) -
我看不出你的代码有任何问题,它应该可以工作,我在我的机器上尝试了类似的东西。你不需要告诉 Matlab 什么,只要确保你的价值观是有意义的。 @Notlikethat 是对的,min(x(:)) 要好得多,但我会简单地使用 mat2gray,它更简单。
-
好吧@Vadim 它不能正常工作。当我同时使用规范化部分和 uint8 时,一切都会变暗
-
原始图像加载为什么数据类型?如果它是整数,您可能会在标准化步骤中得到饱和/截断,这会搞砸。
band1 = double(imread(...等对事物有何影响?
标签: image matlab image-processing rgb