大家好,又见面了,我是你们的朋友全栈君。
一、imfinfo函数——查看图像文件信息,注意参数是文件路径和文件名,不是图像对应的矩阵。
代码语言:javascript复制 >>>imfinfo('C:UserszhulfDesktop.jpg')
ans =
代码语言:javascript复制 Filename: 'C:UserszhulfDesktop.jpg'
FileModDate: '19-Apr-2015 08:40:54'
FileSize: 1528413
Format: 'jpg'
FormatVersion: ''
Width: 1548
Height: 1548
BitDepth: 24
ColorType: 'truecolor'
FormatSignature: ''
NumberOfSamples: 3
CodingMethod: 'Huffman'
CodingProcess: 'Sequential'
Comment: {}
Make: 'Smartisan'
Model: 'Smartisan T1'
Orientation: 0
DateTime: '2015:04:19 08:40:53'
DigitalCamera: [1x1 struct]
GPSInfo: [1x1 struct]
MeteringMode: 'unknown'
LightSource: 'unknown'
Flash: 16
二、imshow函数 1、imshow(I) 显示图像I Matlab代码:
代码语言:javascript复制>> I=imread('2.jpg');
>> imshow(I)
显示结果
2、imshow(I,[low high]) 它显示的是像素处理后的图像I,注意的是它只是显示的时候改变了图像像素,实际上并没有改变图像像素,图像像素值还是原来的值。 Matlab代码:
代码语言:javascript复制>> I=imread('2.jpg');
>> imshow(I,[0 80])
它对图像像素的处理是:将I中像素值大于等于high变成high,将小于等于low的变成low,再将[low,high]中间的像素映射为默认的像素级,一般为[0,255]。 我们把上述描述转为代码:
代码语言:javascript复制I=imread('2.jpg');
mmax=max(I(:));
mmin=min(I(:));
for i=1:256
for j=1:256
if I2(i,j)<=0 I2(i,j)=0;
elseif I2(i,j)>=80
I2(i,j)=255;
end
end
end
I3=I2;
for i=1:256
for j=1:256
I3(i,j)=255/80*I3(i,j);
end
end
imshow(I3)
和imshow(I,[0 80])效果是一样的。 3、 imshow(I,[ ]) 它等同于imshow(I,[min(I:),max(I:)]),可以理解为把图像I转化成0-255灰度级来显示。 我们在这里做一个实验:下面三幅图分别为imshow(I),imshow(I,[])和把图像像素值映射为[0,255]所显示的图像。
我们发现,imshow(i,[])显示的效果正和把像素值映射为[0,255]效果所显示的一样。 Matlab代码如下:
代码语言:javascript复制A=imread('C:UserszhulfDesktopImage1 - SliceImage - 008.tif');
mmax=max(A(:));
mmin=min(A(:));
for i=1:4096
for j=1:4096
A2(i,j)=1.0*255/(mmax-mmin)*(A(i,j)-mmin);
end
end
imshow(A)
figure,imshow(A,[])
figure,imshow(A2)
再例如,一个灰度级为17-2424的int16类型的图像,matlab显示(imshow(I))效果如下
可见,显示效果并不好,接下来我们使用imshow(I,[]),显示结果如下:
显示结果较好,对比度较高。同样,imshow(I,[])的效果等同于把像素映射到0-255灰度级,映射后图像如下:
实现灰度映射的Matlab如下:
代码语言:javascript复制A=dicomread('C:UserszhulfDesktopIM62.dcm');
mmax=double(max(A(:))); %类型转换很重要
mmin=double(min(A(:))); %类型转换很重要
for i=1:512
for j=1:512
tmp=double(A(i,j)); %类型转换很重要
A2(i,j)=uint8(255*(tmp-17)/2407); %类型转换很重要
end
end
imshow(A)
figure,imshow(A,[])
figure,imshow(A2)
上面是对imshow()函数的理解,不明白的欢迎留言交流。
三、rgb2gray 将彩色图像转换为灰度图像
代码语言:javascript复制>> A=imread('C:UserszhulfDesktop.jpg');
>> B=rgb2gray(A);
>> imshow(A)
>> figure,imshow(B)
六、反转图像
代码语言:javascript复制 imshow(I)
%上下翻转:
I2=I(end:-1:1,:);
figure,imshow(I2)
%上下左右均反转:
I3=I(end:-1:1,end:-1:1);
figure,imshow(I3)
七、抽取图像
(压缩>> I4=I(520:855,90:837);
figure,imshow(I4)由原来的1548 x 1548变成了336 x 748。
代码语言:javascript复制>> I5=I(1:2:end,1:2:end);
>> figure,imshow(I5)
图像由1548 x 1548 变成了774 x 774,filesize由99745变成了76747,做了部分压缩,但清晰度差不多。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/185865.html原文链接:https://javaforall.cn