首先,在 MATLAB 中加载并显示一幅图像可以非常简单直接,通常采用 `imread` 函数读取图片,并用 `imshow` 显示出来:
matlab
% 以 'example.jpg' 图片为例进行演示
原始图像 = imread('example.jpg');
figure; imshow(原图);
接下来执行核心步骤——图像反相。对于彩色或者灰度图像来说,我们可以借助于 MATLAB 的 `immultiply` 或者 `-` 运算符轻松完成这项工作:
1) 对于 **灰度图像** 反转:
matlab
% 将原始图像转化为浮点类型以便运算(非必须)
灰度图像是 double 原始图像 / 255;
% 使用元素级减法原理对每个像素值求其补数从而达到反转效果
反向图像 = 1 - 灰度图像;
% 再将其转换回 uint8 类型并且归一化到 [0, 255] 范围内用于正确显示
反向图像 = im2uint8(反向图像);
figure; imshow(反向图像); colormap gray;
2) 若为 RGB 彩色图像,则需要分别对待 R,G,B 各个通道实行上述过程:
matlab
% 加载彩色图像并分离出各颜色分量
彩色图像 = imread('example.png');
r = rgb2gray(rgb(:, :, 1));
g = rgb2gray(rgb(:, :, 2));
b = rgb2gray(rgb(:, :, 3));
% 分别计算三个色彩通道的反相
r_inv = 1 - r;
g_inv = 1 - g;
b_inv = 1 - b;
% 把反相后的三通道重新组合成新的彩色图像
反彩图像 = cat(3, im2uint8(r_inv), im2uint8(g_inv), im2uint8(b_inv));
figure; imshow(反彩图像);
通过以上代码片段可以看出,基于 MATLAB 平台下的图像反相操作不仅简洁明了,而且功能强大且灵活多变,无论是单波段的灰阶图像还是多彩RGB图像都能有效应对,快速生成相应的逆象输出结果。
此外,值得一提的是,虽然这里我们手动实现了这个简单的图像反相算法,实际上 MATLAB 自带了一个名为 `imerode` 的便捷函数可以直接用来做此操作:
matlab
// 直接调用 invertn function 完成灰度/彩色图像反相
反向图像 = imcomplement(original_image);
运用恰当的方法和技术手段结合MATLAB环境能够使得我们在解决实际问题时事半功倍,大大提升工作效率与成果质量,尤其体现在诸如图像反相此类日常频繁使用的初级图像处理技巧上。
标签: 图像反相matlab