Basics of Image
图像的存储方式及位置表示和像素值
Image Coordinate Systems
MATLAB将大多数图像存储为二维矩阵,其中矩阵的每个元素对应于显示图像中的单个像素。为了访问图像中的位置,图像处理工具箱使用几个不同的图像坐标系统作为来约定图像映射的矩阵:
- “Pixel Indices” ——标准的MATLAB数组索引
- “Spatial Coordinates” ———笛卡尔坐标系
Pixel Indices
通常,在图像中表示位置最方便的方法是使用像素索引,图像被视为离散元素的网格,从上到下,从左到右依次排列。
Spatial Coordinates
另一种在图像中表示位置的方法是使用连续变化的坐标系统,而不是使用离散的索引。图像处理工具箱定义了两种类型的空间坐标系统:
- “Intrinsic Coordinates”
- “World Coordinates”
Intrinsic Coordinates
像素点固有坐标系。任意像素中心点的固有坐标(x,y)与该像素的列和行索引相同。当观察固有坐标系时,请注意图像的左上角位于(0.5,0.5)处,而不是位于(0,0)处,图像的右下角位于(numCols + 0.5, numRows + 0.5),其中numCols和numRows是图像中的行和列的数量。
World Coordinates
例如,可以通过指定图像的左上角是点(19.0,7.5)而不是(0.5,0.5)来移动原点。或者,您可能希望指定一个坐标系统,其中每个像素都覆盖一个5×5米的地面补丁。
Define World Coordinates Using XData and YData Properties
XData和YData图像属性是两个元素向量,它们控制由图像张成的坐标范围。你可以指明图像的XData和YData图像属性来创建世界坐标系(非默认坐标系),如果你不指定,则创建默认坐标系。
-
By default, for an image A, XData is [1 size(A,2)], and YData is [1 size(A,1)]. With this default, the world coordinate system and intrinsic coordinate system coincide perfectly.
-
For example, if A is a 100 row by 200 column image, the default XData is [1 200], and the default YData is [1 100].
注意:这些向量中的值实际上是第一个和最后一个像素的中心点的坐标(而不是像素的边缘),因此实际跨越的坐标范围稍微大一些
Display an Image using Nondefault Spatial Coordinates
A = magic(5);
image(A)
axis image
colormap(gca,jet(25))
title('Image Displayed with Intrinsic Coordinates');
figure
x = [19.5 23.5];
y = [8.0 12.0];
image(A,'XData',x,'YData',y)
axis image
colormap(gca,jet(25))
title('Image Displayed with Nondefault Coordinates');

Define World Coordinates Using Spatial Referencing
图像处理工具箱有两个空间引用对象,imref2d和imref3d,还可以使用这些对象来指定图像分辨率,包括非正方形像素。
Image Types in the Toolbox
这些图像类型决定了MATLAB将阵列元素解释为像素强度值的方式。
Binary Images
In a binary image, each pixel has one of only two discrete values: 1 or 0. 二进制图像经常与其他图像类型一起使用,以指示图像的哪些部分需要处理。
Indexed Images
An indexed image consists of an image matrix and a color map.
调色板矩阵map是一个m*3的矩阵,其元素的值在[0,1]之间,各行分别标识红色,绿色,蓝色部分的颜色深度。调色板矩阵通常与索引图一次存储,并在使用imread函数时自动加载,将图像和调色板作为单独的变量读入工作区。
图像矩阵中的像素值是调试板矩阵的索引,因此,索引图中的每个像素的颜色,通过从图像矩阵的像素值映射出调试板矩阵中当前的颜色而决定。 The mapping depends on the class of the image matrix:
- The mapping depends on the class of the image matrix:颜色映射的值为[1,P]的整数值,P为调色板矩阵的行数。
- If the image matrix is of class logical, uint8 or uint16:颜色映射的值为[0,P-1]的整数值.
Grayscale Images
A grayscale image is a data matrix ,它的值代表一个像素的强度(调色板矩阵值)。你可以直接从为每个像素获取单个信号的摄像机中获取灰度图像。你还可以将真彩色或多光谱图像转换为灰度,以强调图像的某个特定方面。例如,您可以对RGB图像的红、绿、蓝通道进行线性组合,这样得到的灰度图像可以指示每个像素的亮度、饱和度或色调。
Truecolor Images
truecolor图像是24位的,每个像素的颜色由三个值指定,这3个彩色通道各为8位,这就产生了1600万种可能的颜色。truecolor图像每个像素的颜色是由存储在像素位置的每个颜色通道的强度组合决定的。
RGB图像是最常见的真彩色图像类型。 In RGB images, the three color channels are red, green, and blue.
HDR Images
Dynamic range是指亮度等级的范围, High dynamic range (HDR) images 尝试捕获现实世界场景的整个色调范围,使用32位浮点值存储每个颜色通道。
Multispectral and Hyperspectral Images
多光谱图像是一种存储三个以上通道的彩色图像,例如,一个多光谱图像可以存储三个RGB彩色通道和三个红外通道,一个高光谱图像可以存储几十个甚至上百个通道
Label Images
标签图像的每个像素指定一个类、对象或感兴趣的区域,你可以使用分割技术从一个场景的图像中获得一个标签图像。
- A
numericlabel image enumerates objects or ROIs in the scene. - A
categoricallabel image specifies the class of each pixel in the image.
Image Processing Toolbox Product Description
图像处理工具箱为图像处理、分析、可视化和算法开发提供了一套全面的参考标准和工作流程应用程序。
你可以使用深度学习和传统的图像处理技术进行图像分割、图像增强、降噪、几何变换和图像配准。
基本的图像导入、处理和导出
% % Step 1: Read and Display an Image
I = imread('pout.tif');
% % Step 2: Check How the Image Appears in the Workspace
whos I
% % Step 3: Improve Image Contrast
% % 查看图像像素强度的分布,
figure
imhist(I) % 该范围没有覆盖[0,255]的潜在范围,并且丢失了可以产生良好对比度的高值和低值
% % 提高图像的对比度,将强度值散布到图像的整个范围
I2 = histeq(I);
figure
imshow(I2)
% % Step 4: Write the Adjusted Image to a Disk File
imwrite (I2, 'pout2.png');
% % Step 5: Check the Contents of the Newly Written File
imfinfo('pout2.png')
纠正不均匀照明,分析前景对象
背景照明在图像的中心比在底部更明亮,对图像进行预处理,使背景光照更加均匀。对不均匀的背景光照进行校正,将图像转换为二值图像,便于识别前景目标。
I = imread('rice.png');
imshow(I)
% % 第一步,用形态开放技术去除所有的前景
se = strel('disk',15)
background = imopen(I,se);
imshow(background)
I2 = I - background;
imshow(I2)
% % 第二步,增强已处理图片的对比度
I3 = imadjust(I2);
% % 第三步,生成二进制图片
bw = imbinarize(I3);
% % 第四步,去除背景噪声
bw = bwareaopen(bw,5);
% % % % % % % % % % %
% % 识别图像中的对象,指定连接性,获取数量以及像素线性索引
cc = bwconncomp(bw,4)
grain = false(size(bw));
grain(cc.PixelIdxList{50}) = true;
imshow(grain)
% % 通过创建一个标签矩阵来可视化图像中的所有连接组件,然后将其显示为伪彩色索引图像
labeled = labelmatrix(cc);
whos labeled
RGB_label = label2rgb(labeled,'spring','c','shuffle');
imshow(RGB_label)
% % 计算每个对象的面积,质心,边界框
graindata = regionprops(cc,'basic')
grain_areas = [graindata.Area];
grain_areas(50)
[min_area, idx] = min(grain_areas)
grain = false(size(bw));
grain(cc.PixelIdxList{idx}) = true;
imshow(grain)
% % 创建面积直方图
histogram(grain_areas)
title('Histogram of Rice Grain Area')

浙公网安备 33010602011771号