matlab图像取反_MATLAB图像处理例子

前面曾经就介绍过图像处理的一些知识了,这里就MATLAB来介绍一些图像处理的案例。今天算是填一个坑。

图像都在https://gitee.com/lcl1026504480/MATLAB-imgprocess/tree/master/im/%E5%AE%9E%E9%AA%8C%E5%9B%BE%E5%83%8F/%E5%AE%9E%E9%AA%8C%E5%9B%BE%E5%83%8F

里面。

图像处理基本操作与灰度变换

1. 基础知识

1) Matlab支持的图像格式

TIFF, JEPG, GIF, BMP, PNG, XWD (X Window Dump),其中GIF不支持写。

2) 与图像处理相关的最基本函数

读:imread; 写:imwrite; 显示:imshow; 信息查看:imfinfo;

3) Matlab支持的数据类型

double, unit8, int8, uint16, int16, uint32, int32, single, char (2 bytes per element), logical.

4) Matlab支持的图像类型

Intensity images, binary images, indexed images, RGB image

2. 图像信息显示与图像读写

>> imfinfo('parrots.bmp')%%图像文件信息显示

Filename: 'parrots.bmp'

FileModDate: '27-Sep-2010 19:42:59'

FileSize: 1179702

Format: 'bmp'

FormatVersion: 'Version 3 (Microsoft Windows 3.x)'

Width: 768

Height: 512

BitDepth: 24

ColorType: 'truecolor'

……

这是个彩色图像。

>> imfinfo('pollen.tif')%%图像文件信息显示

Filename: 'pollen.tif'

FileModDate: '27-Sep-2010 19:42:59'

FileSize: 250398

Format: 'tif'

FormatVersion: []

Width: 500

Height: 500

BitDepth: 8

ColorType: 'grayscale'

……

这个是灰度图像。

>> img=imread('parrots.bmp');%%读入图像文件到内存变量

>> imshow(img);%%图像显示

>> whos img%%显示变量信息

Name      Size                           Bytes  Class

img     512x768x3                      1179648  uint8 array

Grand total is 1179648 elements using 1179648 bytes

>> imwrite(img,'NewParrots.png');%%以其它格式另外保存图像

>> img2=imread('pollen.tif');

>> whos img2

Name       Size                    Bytes  Class

img2     500x500                  250000  uint8 array

Grand total is 250000 elements using 250000 bytes

>> figure, imshow(img2);

3. 直方图显示与均衡化

>> im=imread('pollen.tif');%%读入图像文件

>> size(im)%%观察2维还是3维

ans =%%如果是3维,使用im=im(:,:,1);转成2维

500   500

>> subplot(221), imshow(im)%%显示原图像

>> subplot(222), imhist(im)%%显示直方图

>> im2=histeq(im);%%直方图均衡化

>> subplot(223), imshow(im2)%%显示均衡化后的图像

>> subplot(224), imhist(im2)%%显示均衡化后的图像的直方图

4. 灰度变换

函数形式:J = imadjust(I,[low_in; high_in],[low_out; high_out], Gamma)

参数 Gamma用于指定变换函数形状,小于1时,输出更亮,大于1时,输出更暗。

>> srcimage=imread('chest_xray.tif');%%读入图像文件

>> g1=imadjust(srcimage, [0 1], [0 1], 0.5);%%灰度变换

>> g2=imadjust(srcimage, [0 1], [0 1], 2.5);

>> subplot(1, 3, 1); imshow(srcimage); title ('Source Image');

>> subplot(1, 3, 2); imshow(g1); title ('Gamma=0.5');

>> subplot(1, 3, 3); imshow(g2); title ('Gamma=2.5');

实验

1. 显示不同图像及其直方图,选择chest_xray.tif, pollen.tif和Einstein.png等图像进行直方图均衡化,并显示结果图像和直方图。记录其中一幅图像的原图像、直方图和均衡化后的结果图像与直方图。

2. 选择不同的参数应用灰度变换方法对图像Einstein. png进行增强,观察效果,记录下满意的参数和结果图像。

3. 对图像进行Gamma 变换增强,观察不同Gamma值对增强结果的影响,并分析原因。

原图像及直方图:

直方图均衡化之后的图像及直方图:

显然提高了对比度。

增强的Einstein.png图像参数和结果

命令语句及参数:

>> e=imread('Einstein.PNG');

>> e1=imadjust(e,[0 1],[0 1],0.5);

>> subplot(121),imshow(e);subplot(122),imshow(e1)

结果图像:

不同Gamma值对应的图像增强结果

总结灰度变换中Gamma值对于结果的影响和原因:

γ>1的时候,增强后的图像会比原图像更暗,可以使高灰度值区域分级更明显,低灰度之间的分层基本消失,反之,输出图像会更亮,可以更好的区分低灰度的层次,而使较高灰度的层次几乎消失。从下图可以很好的理解,γ>1的时候输出的灰度值在输入灰度的下方,所以更暗,还可以看到在输入灰度比较高的地方,输出灰度以很陡的斜率增长,而在输入灰度级比较低的地方,斜率很小,因此,低灰度会出现一定程度的输出合并,而高灰度会有输出分层更细的现象。

图像处理应用

读入图像 Problem1.bmp,输出由姓名的拼音和学号组成的结果图像,并把该结果图像缩小后做为水印加到一幅灰度图像的左上角

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值