1. **图像文件的读取、显示和保存**:熟悉如何在 MATLAB 中处理图像文件。 2. **图像文件格式**:了解常见的图像文件格式及其转换。 3. **图像数据的存储形式**:掌握在 MATLAB 中获取图像数据的方法。 ### 实验环境 - **MATLAB**:用于实现图像处理操作。 ### 实验内容 1. **同时对比度现象仿真**:模拟图像中不同背景亮度对相同灰度区域的影响。 2. **截取图像子图**:从图像中提取特定区域。 3. **获取图像的设计特征**:分析图像的特征。 ### 实验步骤 1. **创建零矩阵**:创建一个 10 行 5 列的零矩阵 `x`。 2. **创建全一矩阵**:创建一个 10 行 5 列的全一矩阵 `y`。 3. **修改矩阵部分元素**:将矩阵 `x` 的一部分(4:7, 2:4)更改为 1。 4. **同时对比度现象仿真**: - 所有中间方块的灰度值为 0.5。 - 当背景变亮时,相同灰度的中间方块看起来变暗。 5. **MATLAB 编程**: - 创建一个边长为 256 的最大方块。 - 中间嵌套的方块设置如下: - `middle[34:222,34:222] = 0.5;` - `middle[66:190,71:190] = 1;` - `middle[98:158,98:158] = 0;`
时间: 2025-04-28 12:29:09 浏览: 28
### 图像文件的读取、显示和保存
在MATLAB中,可以非常方便地进行图像文件的操作。以下是详细的步骤:
#### 1. 图像文件的读取
使用 `imread()` 函数可以从磁盘读取图像文件,并将其加载到内存中作为一个数组。
```matlab
img = imread('example.jpg');
```
#### 2. 显示图像
使用 `imshow()` 可以直接显示出该图片。
```matlab
imshow(img);
title('Example Image');
```
#### 3. 存储图像
利用 `imwrite()` 将处理过的图像另存为新文件。
```matlab
imwrite(img, 'output.png', 'PNG'); % 第三个参数指定格式,默认同原文件一致
```
### 常见图像文件格式及转换
- **JPEG/JPG**: 使用有损压缩技术减少文件大小,在网上分享照片最常用的一种格式;
- **PNG**: 支持透明通道并且采用无损算法编码像素数据,适用于需要高质量保真的场景如图标设计等场合下广泛应用;
- **BMP**: 没有任何压缩,质量最高但体积巨大;
- **TIFF**: 含有多种可能性(例如LZW压缩),适合长期存储档案资料;
通过函数 `rgb2gray()`, `ind2rgb()`, 或者第三方插件来完成不同类型间的互换工作。
### 获取图像的数据结构
一旦读入了某个图形资源之后就能获得其二维或多维数值型矩阵表示形式,其中每一项代表对应位置上颜色分量的具体强度值(RGB三元组)。对于灰阶影像而言,则仅需单个浮点数即可描述每个象素明暗程度信息而已。
---
## 针对给定实验任务的回答
按照您提供的实验室指南来进行说明:
#### 步骤解析:
1. **创建零矩阵**
```matlab
x = zeros(10, 5);
```
2. **生成单位阵列**
```matlab
y = ones(10, 5);
```
3. **更新局部单元格内容**
```matlab
x(4:7, 2:4) = 1;
```
4. **对比度现象仿真实现**
为了演示这一效果,我们将构建一个多层嵌套矩形图案作为视觉测试样本。核心思想在于调整相邻区块之间的色调差异让观察者感知变化规律:
```matlab
% 初始化基础画布尺寸为 256*256 全黑底色背景
canvasSize = 256;
middle = zeros(canvasSize);
% 定义各级别方框边界坐标并赋予相应亮度等级
outerBoxBorder = [34 34]; innermostSquareSideLength= round((canvasSize / 2)*0.6 );
setOuterAreaToGrayLevel(middle , outerBoxBorder );
function imgMatrix=setOuterAreaToGrayLevel(matrix,borderPos)
sideLen=length(borderPos)-borderPos+1;
matrix(borderPos:borderPos +sideLen)=repmat([0.5],size(matrix(borderPos:borderPos +sideLen)));
end
innerMid=[round(innermostSquareSideLength*.2 ),...
round(innermostSquareSideLength*.2 )];
matrixRegionSetter(middle,[66,71],[190-66]+1 ,[190-71 ]+1,1 );
matrixRegionSetter(middle,[98 ],[98 ],60 ,0 );
figure();
subplot(1,2,1), imagesc(middle), axis image off, title({'Simultaneous';'Contrast'});
colormap(gray)
subplot(1,2,2), imshow(uint8(imresize(double(middle)*255,[],bicubic))),title({'Original ';'Pattern'})
```
请注意上述代码片段只是一个简化版本,并未完全优化性能或考虑所有边缘情况,但它足以表达出我们想要的效果—即“当周围环境变得更明亮时,原本相同的灰色调会显得较暗”。此过程涉及到改变邻近区域的颜色属性,使得人眼接收到的信息发生变化从而造成视错觉的现象发生。
阅读全文
相关推荐


















