数字图像处理-Matlab实验

实验一 图像增强

实验内容:

  1. 对于给定的低对比度测试图像,利用灰度图像直方图均衡化算法进行图像视觉效果增强。

  2. 对于给定的低照度彩色测试图像,结合颜色空间转换和灰度图像直方图均衡化算法进行图像视觉效果增强。


实验数据:

Test1_1.jpg:

数字图像处理-Matlab实验_第1张图片

Test1_2.jpg:

数字图像处理-Matlab实验_第2张图片


 实验步骤:

%% test1-1
% 读入原始图像
clear
clc
close all
Img= imread('test1_1.jpg'); 
 
%绘制原始图像的直方图
[height,width]=size(Img);  
[counts1, x] = imhist(Img,256);  
counts2 = counts1/height/width;
figure,
subplot(2,2,1),
imshow(Img);title('原始图像');
subplot(2,2,2),
bar(x, counts2); title('原始图像直方图');
 
%统计每个灰度的像素值累计数目
NumPixel = zeros(1,256);%统计各灰度数目,共256个灰度级  
for i = 1:height  
    for j = 1: width  
    %对应灰度值像素点数量+1  
    %NumPixel的下标是从1开始,而图像像素的取值范围是0~255,所以用NumPixel(Img(i,j) + 1)  
    NumPixel(Img(i,j) + 1) = NumPixel(Img(i,j) + 1) + 1;  
    end  
end  
 
%将频数值算为频率
ProbPixel = zeros(1,256);  
for i = 1:256  
    ProbPixel(i) = NumPixel(i) / (height * width * 1.0);  
end  
 
%函数cumsum来计算cdf,并将频率(取值范围是0.0~1.0)映射到0~255的无符号整数
CumuPixel = cumsum(ProbPixel);  
CumuPixel = uint8(255 .* CumuPixel + 0.5); 
 
%直方图均衡
for i = 1:height  
    for j = 1: width  
        Img(i,j) = CumuPixel(Img(i,j)+1);  
    end  
end  
 
%显示更新后的直方图
subplot(2,2,3),
imshow(Img); title('直方图均衡化图像'); 
[counts1, x] = imhist(Img,256);  
counts2 = counts1/height/width;  
subplot(2,2,4),
bar(x, counts2); title('直方图均衡化后图像的直方图');
​
%% test1-2 
clear
clc
close all
Img= imread('test1_2.jpg'); 
hsvImg = rgb2hsv(Img);  
V=hsvImg(:,:,3);  
[height,width]=size(V);  
 
V = uint8(V*255);  
NumPixel = zeros(1,256);  
for i = 1:height  
    for j = 1: width  
    NumPixel(V(i,j) + 1) = NumPixel(V(i,j) + 1) + 1;  
    end  
end  
 
ProbPixel = zeros(1,256);  
for i = 1:256  
    ProbPixel(i) = NumPixel(i) / (height * width * 1.0);  
end  
 
CumuPixel = cumsum(ProbPixel);  
CumuPixel = uint8(255 .* CumuPixel + 0.5);  
 
for i = 1:height  
    for j = 1: width  
        V(i,j) = CumuPixel(V(i,j)+1);  
    end  
end  
 
V = im2double(V);  
hsvImg(:,:,3) = V;  
outputImg = hsv2rgb(hsvImg);  
figure,
subplot(1,2,1),
imshow(Img);title('原始图像');
subplot(1,2,2),
imshow(outputImg); title('在HSV空间均衡化后结果');
%% test1-2,对比方法,所以使用了有关库函数(imhist)
clear
clc
close all
% 读入低照度彩色测试图像
im = imread('test1_2.jpg');
eq_im = im;
R = im(:,:,1);  
G = im(:,:,2);  
B = im(:,:,3);  
​
%分别对三通道的图片进行均衡化 
R = HE(R);  
G = HE(G);  
B = HE(B);  
 
 %最后合成为一张图片
eq_im(:,:,1) = R;  
eq_im(:,:,2) = G;  
eq_im(:,:,3) = B;  
​
% 显示原始图像和增强后的图像
subplot(1, 2, 1);
imshow(im);
title('原始图像');
subplot(1, 2, 2);
imshow(eq_im);
title('三个通道分别均衡化增强后的图像');
其中,HE.m函数内容如下:
function eq_im = HE(gray_im)
    % 获取原始图像的直方图
    histogram = imhist(gray_im);
    
    % 计算累积概率分布
    cdf = cumsum(histogram) / numel(gray_im);
    
    % 将累积概率分布映射到新的灰度级别
    new_levels = uint8(cdf * 255 + 0.5);
    
    % 对原始图像应用灰度级别映射
    eq_im = new_levels(double(gray_im) + 1);
end

实验结果:

Test1_1实验结果如下:

数字图像处理-Matlab实验_第3张图片

        通过原始图像和均衡化后的图像对比,原始图像直方图与均衡化后直方图对比,均衡化后的直方图灰度值更加平均,在整幅图像中不再集中。

        通过灰度图像直方图均衡化算法,成功地对低对比度测试图像进行了图像视觉效果增强。该算法能够增加图像的整体对比度,使得图像更加清晰、明亮。

Test1_2实验结果如下:

数字图像处理-Matlab实验_第4张图片

        通过结合颜色空间转换和灰度图像直方图均衡化算法,我们对低照度彩色测试图像进行了图像视觉效果增强。在将彩色图像转换成其他颜色空间后,对亮度分量/通道进行灰度图像直方图均衡化算法,然后将增强后的亮度分量/通道与饱和度分量/通道重新组合,得到了增强后的彩色图像。这样的处理能够提高图像的亮度和对比度,使图像更加清晰、细节更丰富。

        此外,尝试了不改变颜色空间,对RGB三通道分别进行均衡化,再合成得到均衡化后的彩色图像如下,可见效果不如上图,证明了颜色空间转换对于彩色图像的直方图均衡化更有用。

数字图像处理-Matlab实验_第5张图片


实验二 图像去噪


实验内容:

  1. 对于给定的两幅噪声图像(test2_1.jpg, test2_2.jpg),设计或选择至少两种图像滤波算法对图像进行去噪。

  2. 利用给出的参考图像(test2_1_org.jpg, test2_2_org.jpg),结合图像质量评价算法,对不同算法进行性能分析比较。


实验数据:

Test2_1.jpg:高斯噪声

数字图像处理-Matlab实验_第6张图片 数字图像处理-Matlab实验_第7张图片

Test2_2.jpg:椒盐噪声

数字图像处理-Matlab实验_第8张图片 数字图像处理-Matlab实验_第9张图片


实验步骤:


你可能感兴趣的:(课程学习,计算机视觉,图像处理,opencv)