文章目录
前言
此篇文章是我在B站学习时所做的笔记,主要讲数字图像概论、阅读并显示图像、图像算术,部分为亲自动手演示过的,方便复习用。此篇文章仅供学习参考。
提示:以下是本篇文章正文内容,下面案例可供参考
数码影像的种类
该图片很好的包含了平坦区域,阴影,纹理等细节,这些都有益于测试各种不同的图像处理算法。
- 二进制 Binary:每个像素只是黑色或白色
- 灰度(灰阶)Binary:每个像素是一个灰色的阴影,通常从0(黑色)到255(白色)
- 真颜色或RGB:每个像素都有一个特定的颜色,由其中的红色、绿色和蓝色的数量来描述
为什么是RGB?
人眼中的三种感光细胞(即视锥细胞)对红色、绿色和蓝色的反应最大
典型的RGB图像
阅读并显示图像
- 读取图像:imread()
- 显示图像:imshow ()
>> clear, close all
I = imread('pout.tif'); %read
imshow(I); %show
>> whos
Name Size Bytes Class Attributes
I 291x240 69840 uint8
工作区中的图像变量
图像信息: imtool(‘pout.tif’)
图像查看器:imtool(‘pout.tif’)
在图像查看器中获取像素信息
图像处理
以图像为输入的任何一种信号处理形式
图像四则运算
imabsdiff | 两个图像的绝对差异 |
---|---|
imadd | 添加两个图像或添加常量到图像 |
imapplymatrix | 颜色通道的线性组合 |
imcomplement | 补充图片 |
imdivide | 将一个图像分割成另一个图像或将图像除以常数 |
imlincomb | 图象线性组合 |
immultiply | 将两个图像相乘或将图像乘以常数 |
imsubtract | 从一个图像减去另一个图像或从图像减去常数 |
图像放大:immultiply()
unit8本身就是0-255的数值范围,如果乘的数值超过255就成了255,从影像角度就是被裁切成白场了,比如说这次乘的1.5就不会超过范围。
增加图像亮度
>> I=imread('rice.png');
subplot(1,2,1); imshow(I);
J=immultiply(I, 1.5);
subplot(1,2,2); imshow(J);
降低图像的亮度
方法一:
I=imread('rice.png');
subplot(1,2,1); imshow(I);
J=immultiply(I, 0.5);
subplot(1,2,2); imshow(J);
方法二:
I=imread('rice.png');subplot(1,2,1);imshow(I)
H=I.*0.66; subplot(1,2,2); imshow(H);
方法三:
k=imread('rice.png');
subplot(1,2,1); imshow(k)
I=imread('rice.png');
subplot(1,2,2);
for i=1:size(I,1);
for j=1:size(I,2);
I(i,j)=I(i,j)-50;
end
end
imshow(I)
方法四:
I=imread('rice.png');
K=imdivide(I,1.5);
imshow(K)
方法五:
I=imread('rice.png');
subplot(1,2,1); imshow(I);
K=imread('rice.png');
subplot(1,2,2); imshow(K-50);
图片添加:imadd()
注意:要求图片的大小必须一致。
结果:叠加后的图片像素会更大,像素上升后,越接近255就越亮,所以把影像相加,不管怎么加,它都会比以前亮。
I=imread('rice.png');
J=imread('cameraman.tif'); K=imadd(I,J);
subplot(1,3,1); imshow(I);
subplot(1,3,2); imshow(K);
subplot(1,3,3); imshow(J);
图像直方图:imhist()
I=imread('pout.tif');
imhist(I)
直方图均衡化:histeq()
增强图像的对比度:
I = imread('pout.tif'); I2 = histeq(I);
subplot(1,4,1); imhist(I);
subplot(1,4,2); imshow(I);
subplot(1,4,3); imshow(I2);
subplot(1,4,4); imhist(I2);
几何变换矩阵(2D)
图像旋转:imrotate()
旋转后,图片的大小会改变,新的图片边界会比旧的大,新的图片的矩阵比较大。
I = imread('rice.png'); subplot(1,2,1);
imshow(I); J = imrotate(I, 35, 'bilinear');
subplot(1,2,2); imshow(J);
size(I)
size(J)
写图片:imwrite()
格式支持:‘bmp’、‘gif’、‘hdf’、‘jpg’、‘jpeg’、‘jp2’、‘jpx’、‘pcx’、‘pnm’、‘ppm’、‘ras’、‘tif’、‘tiff’、‘xwd’。
imwrite(I, 'pout2.png');
如若侵权,请及时与我联系。
此篇文章仅供学习参考,禁止转载!