% 读取原始图像(这里假设图像为灰度图像)
img = imread('222.jfif');
% 应用对比度拉伸函数增强图像
img_stretched = imadjust(img);
% 计算图像的平均亮度值
mean_intensity = mean(img_stretched(:));
% 设置阈值为平均亮度值
threshold = mean_intensity;
% 将低于阈值的像素设置为0,其余像素设置为255
img_highlighted = img_stretched > threshold;
img_highlighted = uint8(img_highlighted * 255);
% 显示结果图像
subplot(1, 2, 1), imshow(img), title('Original Image');
subplot(1, 2, 2), imshow(img_highlighted), title('Highlighted Image');
实验结果图:
对比拉伸度函数用于增强图像的对比度,使得图像中的细节更加清晰。这个函数通过将图像中像素值映射到一个新的范围来实现。
3.2
% 读取图像
img = imread('10.jfif');
% 计算归一化直方图
[num_pixels, ~] = imhist(img);
norm_hist = num_pixels / numel(img);
% 绘制直方图并显示
figure;
subplot(2,1,1);
imshow(img);
title('原始图像');
subplot(2,1,2);
bar(norm_hist, 'BarWidth', 1, 'FaceColor', 'b');
xlim([0, 255]); % 设置x轴范围
ylim([0, 0.2]); % 设置y轴范围
xlabel('像素值'); ylabel('归一化频数');
title('图像的归一化直方图');
实验结果图:
计算归一化直方图需要统计图像中各个像素值的出现次数,并对次数进行归一化处理,使得所有像素值的频率之和等于1。通过计算归一化直方图,可以了解图像中不同亮度级别的分布情况。
3.3
% 读取图像
img = imread('11.jfif');
% 进行直方图均衡化
img_eq = histeq(img);
% 显示原始图像和均衡化后的图像以及直方图
figure;
subplot(2, 2, 1);
imshow(img);
title('原始图像');
subplot(2, 2, 2);
imshow(img);
title('灰度图像');
subplot(2, 2, 3);
imshow(img_eq);
title('直方图均衡化后的图像');
subplot(2, 2, 4);
imhist(img);
title('原始图像的直方图');
% 显示均衡化后的直方图
figure;
imhist(img_eq);
title('均衡化后的直方图');
实验结果图:
直方图均衡化是一种增强图像对比度的方法,通过重新分配图像像素的亮度值,使得图像的整体亮度范围更加均匀。这样可以使得图像细节更加突出,并提高图像的视觉效果。
3.4
% 读取原始图像
img = imread('12.jfif');
% 计算原始图像的直方图
originalHistogram = imhist(img);
% 目标直方图(这里以均衡直方图作为示例)
targetHistogram = linspace(0, 255, 256)';
% 计算原始图像和目标直方图之间的映射关系
mapping = zeros(256, 1, 'uint8');
for i = 1:256
[~, index] = min(abs(originalHistogram - targetHistogram(i)));
mapping(i) = index-1; % 注意MATLAB索引从1开始,而像素值从0开始
end
% 应用映射关系,实现直方图规定化
outputImage = mapping(double(img) + 1);
% 显示原始图像和规定化后图像的直方图
figure;
subplot(2, 2, 1), imshow(img), title('原始图像');
subplot(2, 2, 2), imhist(img), title('原始直方图');
subplot(2, 2, 3), imshow(outputImage), title('规定化后图像');
subplot(2, 2, 4), imhist(outputImage), title('规定化后直方图');
实验结果图:
直方图规定化是将一个图像的直方图匹配到另一个图像的直方图的过程。它可以将两个图像的亮度分布调整为相似的,从而达到使它们在视觉上更加相似的目的。
3.5
% 读取图像
image = rgb2gray(imread('12.jfif'));
% 设计一个3x3的卷积核
kernel = [1 1 1; 1 -8 1; 1 1 1];
% 图像相关计算
correlatedImage = conv2(double(image), double(kernel), 'same');
% 图像卷积计算
convolvedImage = conv2(double(image), double(kernel));
% 显示结果
subplot(2, 2, 1), imshow(image), title('原始图像');
subplot(2, 2, 2), imshow(correlatedImage, []), title('相关计算结果');
subplot(2, 2, 3), imshow(convolvedImage, []), title('卷积计算结果');
实验结果图:
相关计算是一种用于检测图像或信号之间相似性的方法。它通过计算两个图像之间的卷积来度量它们的相似程度。相关结果越大,表示两个图像之间的相似度越高。
卷积计算是一种图像处理中常用的操作,用于提取图像的特征。通过定义一个卷积核,将其与图像进行卷积运算,可以实现不同的图像处理任务,如边缘检测、模糊等。
3.6
% 读取图像
image = rgb2gray(imread('12.jfif'));
% 设计一个3x3的卷积核
kernel = [1 1 1; 1 -8 1; 1 1 1];
% 图像相关计算
correlatedImage = conv2(double(image), double(kernel), 'same');
% 将相关计算结果归一化到0到1之间
normalizedImage = mat2gray(correlatedImage);
% 计算相关系数
correlationCoeff = corr2(double(image), double(normalizedImage));
% 显示结果
subplot(1, 2, 1), imshow(image), title('原始图像');
subplot(1, 2, 2), imshow(normalizedImage), title(['相关计算结果,相关系数=', num2str(correlationCoeff)]);
实验结果:
相关系数是用于衡量两个变量之间关联程度的统计指标。在图像处理中,可以通过计算图像中像素值的相关系数来评估两个图像之间的相似度。相关系数的取值范围为-1到1,接近1表示两个图像具有很高的相似性,接近-1表示两个图像具有负相关性,接近0表示两个图像之间没有线性相关性。
- 实验小结
对比拉伸度函数、提取图像的高亮度区域、图像的归一化直方图、直方图均衡化计算、直方图规定化计算、相关和卷积计算以及相关系数的计算都是图像处理中常用的方法和技术,能够对图像进行增强、特征提取和相似度评估等操作。