发布网友 发布时间:2022-04-24 14:04
共2个回答
热心网友 时间:2023-04-22 21:04
其实问题不在于彩图或灰度图,而在于图片是真彩色(Truecolor或RGB)还是索引色(Indexed image)。例如常见的JPEG图片属于真彩色,而GIF则是索引色。
索引色的图片数据为一个二维矩阵X,外加一个颜色表map,也就是说读图片时用的语法应该是:
[X, map] = imread(...)
矩阵X的元素为正整数,它所代表的颜色由map中相应位置的颜色决定。map是一个n*3的矩阵,每行代表一个颜色。索引色的图片也可以是彩色的,取决于map里面有哪些颜色。
而真彩色的图片是一个三维数组,数组的前两维分别对应图片的高和宽,第三维的长度为3,其元素分别代表红绿蓝三基色的值。
明白了上面的道理,翻转就不困难了:
x=handles.img; % 图像数据
x=x(end:-1:1,:,:); % 上下翻转
x=x(:,end:-1:1,:); % 左右翻转
上面的做法既适用于真彩色,也适用于索引色(其实flipud和fliplr也是采用类似的语法实现的,但针对的是二维数组,所以对三维数组会出错)。
希望对楼主有帮助,有问题可再追问。
热心网友 时间:2023-04-22 21:04
因为彩图是个三维的矩阵,你要对第三维的每一组分别做翻转再组合起来。
例子:
case '左右翻转'
T=handles.img;
f(:,:,1)=fliplr(handles.img(:,:,1));
f(:,:,2)=fliplr(handles.img(:,:,2));
f(:,:,3)=fliplr(handles.img(:,:,3));
imshow(f);追问哦 可以了 3Q!