matlab数字图像处理之图像增强

这篇具有很好参考价值的文章主要介绍了matlab数字图像处理之图像增强。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

matlab数字图像处理之图像增强

    1. 图像处理基本目的之一是改善图像质量,而改善图像最常用的技术是图像增强的目的是为了改善图像的视觉效果,使图像更加清晰,便于人和计算机对图像进一步的分析和处理
    1. 图像质量的基本含义是指人们对一幅图像视觉感受的评价。图像增强的目的就是为了改善图像显示的主观视觉质量。图像质量包含两方面的内容,一是图像的逼真度,即被评价图像与原标准图像的偏离程度;二是图像的可懂度,指图像能向人或机器提供信息的能力。目前为止,还没有找到一种和人的主观感受一致的客观、定量的图像质量评价方法。

图像增强按作用域可分为

  • 空域内处理
  • 频域内处理

空域内处理是直接对图像进行处理,频域内处理是在图像的某个变换域内,对图像的变换系数进行运算,然后通过逆变换获得图像增强效果。

1.空域增强

空域内的图像增强就是调整灰度图像的明暗对比度,是对图像中各个像素的灰度值直接进行处理。

常用的方法包括

  • 灰度变换增强
  • 直方图增强
  • 平滑
  • 锐化

1.1 灰度变换增强

灰度变换增强是在空间域内对图像进行增强的一种简单而有效的方法。灰度变换增强不改变原图像中像素的位置,只改变像素点的灰度值,并逐点进行,和周围的其他像素点无关。为了进行灰度变换,首先需要获取图像的直方图。在MATLAB中,可以通过编写程序获取灰度图像的直方图,也可以通过函数imhist( )获取灰度图像的直方图。

I = imread('lena_color_512.tif');
I_G = rgb2gray(I);
row = size(I_G, 1);
column = size(I_G, 2);
N = zeros(1,256);
for i = 1: row
    for j = 1: column
        k = I_G(i, j);
        N(k+1) = N(k+1) + 1;
    end
end

figure
subplot(121), imshow(I_G);
subplot(122), bar(N);
axis tight;

下图为灰度图以及进行了每个像素点增强1的灰度直方图
matlab数字图像处理之图像增强
图一如下:
matlab数字图像处理之图像增强
当然也可以直接对灰度图使用imhist函数不进行别的操作,只绘制直方图

I = imread('lena_color_512.tif');
I_G = rgb2gray(I);
imhist(I_G);

如下图2:(与图一相比肉眼看不出差距,因为每个像素点只增加了1个灰度级)
matlab数字图像处理之图像增强


1.2 直方图增强

图像的灰度直方图表示灰度图像中具有每种灰度的像素的个数,反映了图像中每种灰度级出现的频率,是图像的基本统计特征之一。直方图均衡方法因为其有效性和简单性已成为图像对比度增强的最常用方法。其基本思想是根据输入图像的灰度概率分布来确定其对应的输出灰度值,通过扩展图像的动态范围达到提升图像对比度的目的。

直方图增强是以概率论为基础,常用的直方图调整方法包括直方图均衡化和直方图规定化两方面。

  • 直方图均衡化

由上面的灰度图的直方图指导它并不均匀,主要集中在中间,故我们来考虑均衡化,直接调用函数histeq()即可

I = imread('lena_color_512.tif');
J = rgb2gray(I);

H = histeq(J);

figure(1)
subplot(121), imshow(J);
subplot(122), imshow(H);

figure(2)
subplot(121), imhist(J);
subplot(122), imhist(H)

下图中右边均为均衡化的结果

matlab数字图像处理之图像增强
matlab数字图像处理之图像增强

  • 直方图规定化
I = imread('lena_color_512.tif');
J = rgb2gray(I);

hgram = ones(1, 256);
H = histeq(J);
B = histeq(J, hgram);

figure(1)
subplot(121), imshow(H);
subplot(122), imshow(B);

figure(2)
subplot(121), imhist(H);
subplot(122), imhist(B);

这里的hgram为自己设定的规定化函数,这里设定了一个全是1的矩阵,用它来规定原图,规定化是一个拟合过程,变换后的直方图不会与目标图像的直方图完全一致.
右图为采用规定化的结果,即拟合的结果
matlab数字图像处理之图像增强

matlab数字图像处理之图像增强


1.3 平滑

平滑就是去除一些离散的噪声以及将目标里的间断点串联起来以得到一个清晰的画面,平滑一般是用滤波来实现,因为我也是刚学所以是用的现成的函数,举例(均值滤波)还有很多其他的平滑滤波如邻域平均滤波,加权平均滤波:

clc
clear all
picture=rgb2gray(imread("dream.jpg"));
way1=fspecial('average',3);
picture1=filter2(way1,picture)/255;%一定要除以255,否则是白图
figure;
subplot(121);
imshow(picture);
subplot(122);
imshow(picture1);

 matlab数字图像处理之图像增强

左图是原图,右图是均值滤波(处理高斯噪声好)产生的图片,还有线性滤波,中值滤波,自适应滤波;

1.4 锐化

    锐化是提取边缘的一个功能,可以将提取到的边缘图片与原图片进行叠加,可以实现图片的清晰度增加,举例:

clc
clear all
picture=rgb2gray(imread("dream.jpg"));
way2=fspecial('sobel');
picture1=filter2(way2,picture);
picture2=uint8(picture1)+picture;
figure;
subplot(131);
imshow(picture);
subplot(132);
imshow(picture1);
subplot(133);
imshow(picture2);

matlab数字图像处理之图像增强

 左图是原图,中间是sobel算子锐化得到的图片,右图是将原图与锐化的得到的图片进行叠加,可以看出右图增加了视觉效果,除此之外还有其他多种算子;

2.图像属性

2.1 图像的标准差

直接利用std()来计算向量的标准差,通过std2()来计算矩阵的标准差,灰度图像的像素为二维矩阵A,则该图像的标准差为std2(A),用mean2()来获取图像的均值,同样对于两个大小相等的二维矩阵,可以计算起相关系数,利用corr2来实现,这里用代码和结果来展示:

I = imread('lena_color_512.tif');
J = rgb2gray(I);

gray = mean2(J);    %灰度图的均值
grb = mean2(I);      %彩色图的均值
r = mean2(I(:, :, 1))  %红色均值
g = mean2(I(:, :, 2))  %绿色均值
b = mean2(I(:, :, 3))  %蓝色均值

s1 = std2(J)           %灰度图方差
J2 = histeq(J);
s2 = std2(J2)         %均衡化后方差

F = medfilt2(J);
r = corr2(J, F)       %原图与滤波后图形的相关系数
结果如下
r =
  180.2237
g =
   99.0512
b =
  105.4103
s1 =
   47.8557
s2 =
   74.7229
r =
    0.9959

2.2 图像的等高线

在MATLAB软件中,通过函数imconlour( )可以绘制灰度图像的等高线。
该函数的简单调用格式为:

  • imcontour(I): 该函数中I为灰度图像的二维数据矩阵,绘制灰度图像的等高线。
  • imcontour(I, n): 该函数设置等高线的条数为n,如果不指定n,该函数会自动选取n。
I = imread('lena_color_512.tif');
J = rgb2gray(I);

figure(1)
subplot(121), imshow(J);
subplot(122), imcontour(J, 3);

右图为设定三条等高线的结果,图形比较的不美观,因为灰度值划分跨度太大
matlab数字图像处理之图像增强

subplot(121), imshow(J);
subplot(122), imcontour(J);

不设定n的取值之后,其灰度划分比较接近原图
matlab数字图像处理之图像增强

3.图像滤波

3.1 空域滤波

空域滤波是空域图像增强的常用方法。空域滤波是对图像中每个像素为中心的邻域进行一系列的运算,然后将得到的结果代替原来的像素值。空域滤波分为

  • 线性空域滤波
  • 非线性空域滤波
线性空域滤波

线性平均滤波是一种最常用的线性空域滤波。线性平均滤波实际是一种低通滤波,信号的低频部分通过,阻止高频部分通过。由于图像的边缘处于高频部分,因此线性平均滤波后,会造成图像边緣的模糊。在进行线性平均滤波时,常用的模板大小为3X3,如下所示:

T = 1/5 [ 0 1 0 ; 1 1 1; 0 1 1]

对应的函教表达式为:
f(x) = 1/5 [f(x, y-1) + f(x-1, y) + f(x,y) + f(x+1, y) + f(x, y+1)]

举个例子

I = imread('lena_color_512.tif');
J = imnoise(I, 'salt & pepper', 0.02); %添加椒盐噪声
h = ones(3,3)/5;
h(1,1) = 0; h(1,3) = 0;
h(3,1) = 0; h(3,3) = 0;  %构建线性滤波矩阵
K = imfilter(J, h);  %滤波

figure(1)
subplot(131), imshow(I);
subplot(132), imshow(J);
subplot(133), imshow(K);

% figure(2)
% subplot(121), imhist(J);
% subplot(122), imhist(B);

matlab数字图像处理之图像增强
当然也可以添加高斯噪声,其滤波的模板是不同的

下面是对灰度图像加高斯噪声再进行滤波的处理

I = imread('lena_color_512.tif');
I = rgb2gray(I);
I = im2double(I);
J = imnoise(I, 'gaussian', 0, 0.01); %添加高斯噪声
h = ones(3,3)/9;
K = conv2(J, h);  %滤波

subplot(131), imshow(I);
subplot(132), imshow(J);
subplot(133), imshow(K);

matlab数字图像处理之图像增强
当然也可以直接对彩色图像进行处理,代码复杂一些,因为这里的卷积函数是对二维来操作的,故

I = imread('lena_color_512.tif');
I = im2double(I);
[h, w, c] = size(I);

J = zeros(h, w, c, 'double');
J(:, :, 1) = imnoise(I(:, :, 1), 'gaussian', 0, 0.1); %添加高斯噪声
J(:, :, 2) = imnoise(I(:, :, 2), 'gaussian', 0, 0.1); %添加高斯噪声
J(:, :, 3) = imnoise(I(:, :, 3), 'gaussian', 0, 0.1); %添加高斯噪声

P = ones(6, 6)/36;
img = zeros(h, w, c, 'double');
img(:, :, 1) = conv2(J(:, :, 1), P, 'same');
img(:, :, 2) = conv2(J(:, :, 2), P, 'same');
img(:, :, 3) = conv2(J(:, :, 3), P, 'same');

figure(1)
subplot(131), imshow(I);
subplot(132), imshow(J);
subplot(133), imshow(img);

这里每个图层都增加了0.1倍的高斯噪声
matlab数字图像处理之图像增强


非线性空域滤波

非线性空域滤波主要包括中值滤波,顺序统计滤波和自适应滤波等。

  • 中值滤波
    一种保护边缘的非线性平滑方法,在图像增强中应用非常广泛
  1. 一维中值滤波:对于一维数据,按照从大到小的顺序排列
  2. 二维中值滤波:用于图像增强,可以去除图像中的椒盐噪声,平滑效果优于均值滤波,在抑制噪声的同时还能保持图像的边缘清晰,常用medfilt2()进行图像的二维中值滤波

顺序统计滤波例子:

I = imread('lena_color_512.tif');
I = rgb2gray(I);
I = im2double(I);

J1 = ordfilt2(I, 1, true(5)); %构造一个5*5的模板,取最小值1作为输出
J2 = ordfilt2(I, 25, true(5)); %构造一个5*5的模板,取最大值25作为输出

figure(1)
subplot(131), imshow(I);
subplot(132), imshow(J1);
subplot(133), imshow(J2);

可以看到取最小值图像暗一些,而最大值图像显得白一些
matlab数字图像处理之图像增强
二维中值滤波例子:

I = imread('lena_color_512.tif');
I = rgb2gray(I);
I = im2double(I);
J = imnoise(I, 'salt & pepper',  0.03); %添加椒盐噪声
K = medfilt2(J);

figure(1)
subplot(131), imshow(I);
subplot(132), imshow(J);
subplot(133), imshow(K);

matlab数字图像处理之图像增强

  • 自适应滤波
    可通过调整图像局部的方差来调整滤波器的输出
I = imread('lena_color_512.tif');
I = rgb2gray(I);
I = im2double(I);
J = imnoise(I, 'gaussian', 0,  0.01); %添加椒盐噪声
K = wiener2(J, [5 5]);

figure(1)
subplot(131), imshow(I);
subplot(132), imshow(J);
subplot(133), imshow(K);

matlab数字图像处理之图像增强


3.2 频域滤波

频率域图像增强首先通过傅立叶变换将图像从空间域转换为频率域,然后在频率域内对图像进行处理,最后通过傅立叶反变换转换到空间域。频率域内的图像增强通常包括低通滤波、高通滤波和同态滤波等。

设为原始图像函数,为滤波器脉冲响应函数,则空域内的滤波是基于卷积运算的,如下所示:
g(x,y)= f(x, y)*h(x, y)

其中可以是低通或高通滤波,为空域滤波的输出图像函数。根据卷积定理,上式的傅立叶变换如下:
G(u,v)= F(u, v)H(u, v)

低通滤波器
  • 低通滤波器
    低通滤波器的功能是让低频率通过而滤掉或衰减高频,其作用是过滤掉包含在高频中的噪声。所以低通滤波的效果是图像的去噪声平滑增强,但同时也抑制了图像的边界,造成图像不同程度上的模糊。对于大小为M*N的图像,频率点与频域中心的距离为D,其表达式为:
    D(u,v)=[(u - M/2)^2 + (v - N/2)^2 ]^(1/2)

代码如下:

I = imread('lena_color_512.tif');
I = rgb2gray(I);
I = im2double(I);

M = 2*size(I, 1);
N = 2*size(I, 2);
u = -M/2 : (M/2-1);
v = -N/2 : (N/2-1);
[U, V] = meshgrid(u, v);
D = sqrt(U.^2 + V.^2);  %构造D
D0 = 80;  %D0为截止频率
H = double(D <= D0);
J = fftshift(fft2(I, size(H, 1), size(H, 2))); %转换为频域再用fftshift进行平移
K = J.*H;   %频域内滤波
L = ifft2(ifftshift(K));   %逆变换回到空域
L = L(1: size(I, 1), 1: size(I, 2));

figure
subplot(121), imshow(I);
subplot(122), imshow(L);

可看到高频部分被截止,图像边缘变得模糊
matlab数字图像处理之图像增强

巴特沃斯滤波器
I = imread('lena_color_512.tif');
I = rgb2gray(I);
I = im2double(I);

M = 2*size(I, 1);
N = 2*size(I, 2);
u = -M/2 : (M/2-1);
v = -N/2 : (N/2-1);
[U, V] = meshgrid(u, v);
D = sqrt(U.^2 + V.^2);
D0 = 50;  %D0为截止频率
n = 6;      %阶数为6
H = 1./(1+(D./D0).^(2*n));
J = fftshift(fft2(I, size(H, 1), size(H, 2))); %转换为频域再用fftshift进行平移
K = J.*H;   %频域内滤波
L = ifft2(ifftshift(K));   %逆变换回到空域
L = L(1: size(I, 1), 1: size(I, 2));

figure
subplot(121), imshow(I);
subplot(122), imshow(L);

同样去除了边缘部分,图像变得模糊
matlab数字图像处理之图像增强

巴特沃斯高通滤波器


代码与前面巴特沃斯的相同,只是改变了截止频率,下图为D0=30的结果
matlab数字图像处理之图像增强

高斯高通滤波器
I = imread('lena_color_512.tif');
I = rgb2gray(I);
I = im2double(I);

M = 2*size(I, 1);
N = 2*size(I, 2);
u = -M/2 : (M/2-1);
v = -N/2 : (N/2-1);
[U, V] = meshgrid(u, v);
D = sqrt(U.^2 + V.^2);
D0 = 20;  %D0为截止频率
H = 1-exp(-(D.^2)./(2*(D0^2)));
J = fftshift(fft2(I, size(H, 1), size(H, 2))); %转换为频域再用fftshift进行平移
K = J.*H;   %频域内滤波
L = ifft2(ifftshift(K));   %逆变换回到空域
L = L(1: size(I, 1), 1: size(I, 2));

figure
subplot(121), imshow(I);
subplot(122), imshow(L);

可观察到图像的边缘得到了增强,即低频部分被滤去
matlab数字图像处理之图像增强

带阻滤波器
I = imread('lena_color_512.tif');
I = rgb2gray(I);
I = imnoise(I, 'gaussian', 0, 0.01);
I = im2double(I);

M = 2*size(I, 1);
N = 2*size(I, 2);
u = -M/2 : (M/2-1);
v = -N/2 : (N/2-1);
[U, V] = meshgrid(u, v);
D = sqrt(U.^2 + V.^2);
D0 = 50;  %D0为中心频率
W = 30;   %带宽
H = double(or(D<(D0-W/2), D>(D0+W/2)));  %阻带为50-30/2到50+30/2;   
J = fftshift(fft2(I, size(H, 1), size(H, 2))); %转换为频域再用fftshift进行平移
K = J.*H;   %频域内滤波
L = ifft2(ifftshift(K));   %逆变换回到空域
L = L(1: size(I, 1), 1: size(I, 2));

figure
subplot(121), imshow(I);
subplot(122), imshow(L);

左图加了高斯噪声,右图为阻隔了一定频率的滤波图形
matlab数字图像处理之图像增强

同态滤波


同态滤波是一种特殊的滤波技术,可用于压缩图像灰度的动态范围,且增强对比度。这种处理方法与其说是一种数学技巧,倒不如说因为人眼视觉系统对图像亮度具有类似于对数运算的非线性特性。

I = imread('lena_color_512.tif');
I = rgb2gray(I);
J = log(im2double(I)+1);
K = fft2(J);
n = 5;
D0 = 0.1*pi;
rh = 0.7;
rl = 0.4;
[row, column] = size(J);

for i = 1: row
    for j = 1: column
        D1(i, j) = sqrt(i^2+j^2);
        H(i, j) = rl + (rh/(1+(D0/D1(i, j))^(2*n)));
    end
end
L = K.*H;
M = ifft2(L);
N = exp(M)-1;

figure
subplot(121), imshow(I);
subplot(122), imshow(N);

matlab数字图像处理之图像增强
注意如果运行代码的时候没有别的问题,却有些矩阵维度不一样啥的,或者别的变量问题,j极大可能是没有清空变量和工作区,加入这些代码

clear all
close all


图像增强部分内容比较多,一定要好好掌握哇~

重点参考

1. Matlab之图像增强技术
2. 数字图像处理——频域滤波基础文章来源地址https://www.toymoban.com/news/detail-444796.html

到了这里,关于matlab数字图像处理之图像增强的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数字图像处理(番外)图像增强

    图像增强的方法是通过一定手段对原图像附加一些信息或变换数据,有选择地突出图像中感兴趣的特征或者抑制(掩盖)图像中某些不需要的特征,使图像与视觉响应特性相匹配。 图像对比度计算方式如下: C = ∑ δ δ ( i , j ) P δ ( i , j ) C=displaystylesum_{{delta}}delta(i,j)P_delta(

    2024年02月14日
    浏览(48)
  • 数字图像处理:实验三 图像增强

    图像增强是数字图像处理过程中常采用的一种方法。为了改善视觉效果或便于人和机器对图像的理解和分析,根据图像的特点或存在的问题采取的改善方法或加强特征的措施称为图像增强。图像增强处理是改变图像视觉效果的手段,增强后的图像便于对它的后续处理。图像增

    2024年02月04日
    浏览(45)
  • 【计算机视觉】数字图像处理(四)—— 图像增强

    图像增强是采用一系列技术去改善图像的视觉效果,或将图像转换成一种更适合于人或机器进行分析和处理的形式。例如采用一系列技术有选择地突出某些感兴趣的信息,同时抑制一些不需要的信息,提高图像的使用价值。 图像增强方法 图像增强方法从增强的作用域出发,可

    2023年04月16日
    浏览(102)
  • 数字图像处理与Python实现-图像增强经典算法汇总

    本文将对图像增强经典算法做一个简单的汇总。图像增强的经典算法有:像素变换、图像逆变换、幂律变换、对数变换、图像均衡化、对比受限自适应直方图均衡(CLAHE)、对比度拉伸、Sigmoid校正、局部对比度归一化。 转换是将一组输入映射到一组输出的函数,这样每个输入

    2024年02月09日
    浏览(48)
  • 数字图像处理-matlab图像内插

    目标各像素点的灰度值代替源图像中与其最邻近像素的灰度值 参考博客 假设一个2X2像素的图片采用最近邻插值法需要放大到4X4像素的图片,右边该为多少? 最近邻插值法坐标变换计算公式: s r c X = d s t X ∗ ( s r c W i d t h / d s t W i d t h ) srcX=dstX*(srcWidth/dstWidth) src X = d s tX ∗

    2024年02月03日
    浏览(56)
  • 基于matlab的数字图像处理之彩色图像处理

    一、实验目的 (1)了解如何利用RGB分量生成简单的图像。 (2)熟练掌握RGB彩色模型转换到HIS彩色模型的过程。 (3)熟练掌握RGB图像的彩色分割。 (4)熟练掌握彩色图像如何在向量空间中进行边缘检测。 二、实验仪器(软件平台)     计算机、MATLAB软件 三、实验原理

    2024年02月06日
    浏览(43)
  • 数字图像处理实验之Matlab对图像的基本处理

    1、提取Lena图像的左半上角部分,与原始Lena图像在同一个figure中显示,并做适当命名 效果图 2、利用 imnoise , 对原始Lena图像叠加高斯噪声,产生4幅、14幅、140幅的含噪图像。对这些含噪图像采用 相加  运算,来验证、比较图像相加消除叠加性噪声的效果。将原始图像、1幅噪

    2024年02月03日
    浏览(57)
  • 数字图像处理 关于matlab的图像变换

    熟悉及掌握图像的傅里叶变换、离散余弦变化原理及性质,实现图像的频率域变换。 1. 读入一幅图像,分别为图像添加叠加密度为0.04的椒盐噪声,均值为0方差为0.02的高斯噪声,做FFT变换。将原始图像、原始图像频谱图、添加噪声后的图像,以及噪声图像的频谱图同时显示出

    2024年02月05日
    浏览(48)
  • 数字图像处理之matlab实验(五):形态学图像处理

    常见的形态学处理包括腐蚀、膨胀、开运算、闭运算。不同的操作有不同的作用,同样的操作在不同类型的图片上也有不同效果,具体效果如下表格所示。要求熟练掌握对二值图像的形态学处理。 不同操作对不同类型图像处理效果 一、对二值图像进行处理 1、结构元素 在开

    2024年02月04日
    浏览(60)
  • 数字图像处理之matlab大作业:自制图像处理小工具

    学习的过程向来不是容易的,创造一个作品的过程更是不容易的。因此,在文章的最后,提供了两个现成的示例代码,大家直接可以拿来运行。在完成大作业的时候,大家可以在已有作品的基础上,按照自己的需求进行修改,添加我们课程要求的功能,并体会如何完成一个完

    2024年02月10日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包