当前位置: 首页 > article >正文

数字图像处理-Matlab实验

实验一 图像增强

实验内容:

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

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


实验数据:

Test1_1.jpg:

Test1_2.jpg:


 实验步骤:

%% 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实验结果如下:

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

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

Test1_2实验结果如下:

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

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


实验二 图像去噪


实验内容:

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

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


实验数据:

Test2_1.jpg:高斯噪声

 

Test2_2.jpg:椒盐噪声

 


实验步骤:


                

http://www.kler.cn/a/145867.html

相关文章:

  • 数据恢复常见故障(四)关键信号的耦合电容撞件后导致SATA前端通信异常
  • HTML语言的数据库编程
  • 【计算机网络】传输层协议TCP与UDP
  • PyTorch使用教程(8)-一文了解torchvision
  • idea中远程调试中配置的参数说明
  • 【QT】 控件 -- 按钮类(Button)
  • Doris单机部署——2.0.1.1版本
  • 单例模式-C++实现
  • 使用 Vue3 + Pinia + Ant Design Vue3 搭建后台管理系统
  • 有理数比较
  • 计算机图形学-变换基础
  • Linux 面试题(一)
  • zookeeper 单机伪集群搭建简单记录
  • AUTOSAR汽车电子嵌入式编程精讲300篇-汽车CAN总线安全性模糊测试
  • docker network容器网络通信
  • 机器学习【02】在 Pycharm 里使用 Jupyter Notebook
  • 【第二部分:结构】ARM Realm Management Monitor specification
  • Android 10.0 mtp模式下连接pc后显示的文件夹禁止删除copy重命名功能实现
  • Jenkins 保姆级教程
  • 一篇文章完成Hbase入门
  • SpringMVC(三)
  • (C)一些题4
  • Python与ArcGIS系列(十)要素查询与选择
  • ESP32控制数码管实现数字叠加案例
  • 【学习记录】从0开始的Linux学习之旅——驱动模块编译与加载
  • 开源与闭源:大模型未来的发展之争