使用matlab自己编写函数(function)实现图像的均衡化和规定化,以pollen.jpg为例
时间: 2024-10-11 17:07:16 浏览: 40
在MATLAB中,你可以通过自定义函数(Function)来处理图像,包括图像均衡化和归一化。这里以"pollen.jpg"为例,演示如何编写这两个步骤的函数:
1. **图像均衡化**,通常我们使用直方图均衡化(Histogram Equalization)来增强图像对比度。以下是简单实现这个功能的函数示例:
```Matlab
function eqImage = histogramEqualization(img)
%读取图片数据
imgData = imread('pollen.jpg');
%获取原始图像的灰度值
if size(imgData, 3) == 3
imgData = rgb2gray(imgData);
end
%计算直方图
hist = imhist(imgData);
%找到最大值
maxVal = max(hist);
%创建累积分布函数
cdf = cumsum(hist(:)) / sum(hist(:));
%对像素进行映射
eqImage = cdf(imgData(:));
%将结果转换回图像
eqImage = reshape(eqImage, size(imgData));
end
```
2. **图像规范化(Normalization)**通常是将图像的像素值限制在0到1之间,可以使用`imadjust`函数,也可以手动计算:
```Matlab
function normImage = imageNormalization(img)
%获取最小值和最大值
minVal = min(img(:));
maxVal = max(img(:));
%计算规范化范围
range = maxVal - minVal;
%避免除零,如果范围为零,则所有像素不变
if range ~= 0
% 归一化
normImage = (img(:) - minVal) / range;
else
normImage = img;
end
%将结果转换回图像
normImage = reshape(normImage, size(img));
end
```
运行这两个函数,你需要先保存它们到一个.m文件(如myImProcessingFunctions.m),然后在MATLAB命令窗口中导入并调用。
阅读全文