Advertisement

【数字图像处理】实验(2)——图像增强(MATLAB实现)

阅读量:

图像增强

  • 一、实验目的及其重要性
  • 二、实验的具体内容
  • 三、实验的理论基础
  • 四、Matlab中相关的函数介绍
  • 五、代码实现与结果展示
  • (1)对Image1进行灰度化处理,并生成并展示其灰度直方图;
    • (2)对灰度图像进行分段线性变换处理;

    • (3)执行直方图均衡化处理;

    • (4)实施伪彩色增强处理;

    • (5)向gray添加噪声后进行平滑处理;

    • (6)利用Sobel算子进行图像锐化处理;

    • (7)拓展研究内容:

      • (1)观察上述各种处理后的效果;
      • (2)尝试将伪彩色增强替换为热金属编码或彩虹编码方法;
      • (3)探索并设计不同的平滑滤波器和平滑方法以及锐化的不同滤波器组合,并观察其效果;
      • (4)自行设计创新方法以实现对彩色图像的增强处理。
    • 六、实验总结

一、实验意义及目的

(1)深入学习并熟练掌握图像处理工具Matlab,并了解基于Matlab的图像处理函数相关知识[
(2)全面掌握多种图像增强技术。

二、实验内容

获取并加载彩色图像Image1,并调用Matlab内置的图像处理函数执行以下操作:
(1)对原图进行灰度转换得到gray变量,并输出其灰度直方图;
(2)对gray执行分段线性变换;
(3)对gray实施直方图均衡化处理;
(4)对gray应用伪彩色增强效果;
(5)在gray上加入高斯噪声后进行平滑滤波;
(6)利用Sobel边缘检测算子进行图像锐化处理;
(7)完成上述操作后需遵循实验设计中的拓展内容。

(1)将上述提到的处理参数进行调整,并观察其处理效果的变化情况。
(2)采用热金属编码或彩虹编码作为新的伪彩色增强方法。
(3)尝试采用多种平滑滤波器和锐化滤波器,并评估其性能表现。
(4)独立设计一种新的图像增强算法并应用于彩色图像的增强处理过程中。

三、实验原理

  1. 灰度线性变换就是说,将图片中的每个像素按照线性灰度变换函数来进行亮度调整。
  2. 直方图均衡化通过点处理的方式,让输入图片在各个亮度等级上都有相同数量的像素,从而达到平衡分布的效果。
  3. 伪彩色增强技术是将黑白图片的不同亮度等级转化为不同的颜色组合,从而提高视觉效果的技术手段。
  4. 锐化(Sharpening)是一种用于改善图片质量的方法,它能有效消除由于传输或捕捉过程中未达到理想聚焦而导致的画面模糊问题;同时在图像识别和分析过程中,通常需要强调目标物体的关键特征——轮廓和边缘信息。
  5. 边缘锐化主要是指对图片中的轮廓边缘以及细节部分进行增强处理,使原本模糊或者不够清晰的目标边界更加分明完整;这可以通过空域中的高通滤波技术实现(俗称为勾边处理)。

四、Matlab相关函数介绍

(1)imhist函数
功能:统计变显示图像的直方图。
调用格式:
imhist(I):显示图像I的直方图。
imhist(I, n):显示图像I的直方图,n指定直方图中的列数。
[COUNTS,X] = imhist(…):返回直方图数据向量COUNTS和相应的色彩值向量X。
(2)histeq函数
功能:直方图均衡化
调用格式:
J = histeq(I,hgram):将图像I的直方图变成用户指定的向量hgram,hgram中的各元素值域为[0,1];
J = histeq(I,N):对原始图像I进行直方图均衡化,N为输出图像的灰度技术,默认N为64。
(3)imadjust函数
功能:调整图像灰度值或颜色映射表,增加图像的对比度。
调用格式:
J = imadjust(I,[LOW_IN; HIGH_IN],[LOW_OUT; HIGH_OUT],GAMMA):调整图像I的灰度值;[LOW_IN; HIGH_IN]指定原始图像中要变换的灰度范围;[LOW_OUT; HIGH_OUT]指定变换后的灰度范围;低于LOW_IN 、高于HIGH_IN 的采取截取式;都可以使用空的矩阵[],默认值是[0 1]; GAMMA为标量,指定描述值I和值J关系的曲线形状,如果小于1,此映射偏重更高数值(明亮)输出,如果gamma大于1,此映射偏重更低数值(灰暗)输出,如果省略此参数,默认为(线性映射)。
NEWMAP = imadjust(MAP,[LOW_IN; HIGH_IN],[LOW_OUT; HIGH_OUT],GAMMA):调整索引图像的颜色表map,其他参量同上。
RGB2 = imadjust(RGB1,…):对RGB图像RGB1的R、G、B分量进行调整。
(4)imnoise函数
J = imnoise(I,type,parameters):按指定类型在图像I上添加噪声;type表示噪声类型,parameters为其所对应参数,可取值如表1所示:
表1 imnoise函数参数表

在这里插入图片描述

第5节 fspecial 函数 h=fspecial(type,parameters) 用于生成基于指定类型的二维滤波器h。 见表2 所示。

在这里插入图片描述

(6)filter2函数
Y = filter2(B,X,shape):采用二维FIR滤波器B对矩阵X进行处理,并根据指定形状参数shape来确定输出结果Y的大小。具体来说,“full”形状会导致输出结果大于输入矩阵X;而“same”形状则使输出结果与输入矩阵大小一致,默认情况下输出结果与输入矩阵大小一致。“valid”形状则会使得输出结果小于输入矩阵X。
(7)imfilter函数
B=imfilter(A,H,option1,option2,…):根据给定的一系列属性option1、option2等以及由fspecial生成的多维滤波器H对图像A执行图像处理操作。这些属性及其作用方式可参考表3进行了解与设置。
表3 imfilter函数属性表

在这里插入图片描述

(8)medfilt2函数
B = medfilt2(A,[m n]]):用[m n]大小的滤波器对图像A进行中值滤波,输出图像为B,滤波器大小默认为3×3。
(9)edge函数
BW = edge(I):对灰度或二值图像I进行边缘检测,检测后图像为二值图像BW,边界处取值为1,否则为0。缺省情况下,edge函数使用Sobel算子检测边缘,也可以指定算子。
BW = edge(I,‘sobel’);BW = edge(I,‘prewitt’);BW = edge(I,‘roberts’);
BW = edge(I,‘log’);BW = edge(I,‘canny’)引号内为指定算子。
BW = edge(I,‘sobel’,thresh):thresh指定保留边缘的阈值,若为0,edge函数自动选择该值。

五、代码及结果

(1)将Image1灰度化为gray,统计并显示其灰度直方图;

(2)对gray进行分段线性变换;

代码:

复制代码
    Image1=im2double(imread('lotus.bmp'));
    gray=rgb2gray(Image1);
    imhist(gray),title('灰度直方图'); 
    [h,w]=size(gray);                                     
    NewImage1=zeros(h,w);                 
    a=80/256; b=180/256; c=30/256; d=220/256;
    for x=1:w
    for y=1:h
        if gray(y,x)<a 
            NewImage1(y,x)=gray(y,x)*c/a;
        elseif gray(y,x)<b
            NewImage1(y,x)=(gray(y,x)-a)*(d-c)/(b-a)+c;
        else
            NewImage1(y,x)=(gray(y,x)-b)*(255-d)/(255-b)+d;
        end                                               
    end
    end
    figure,imshow(NewImage1),title('分段线性变换');

结果:

在这里插入图片描述
在这里插入图片描述

(3)对gray进行直方图均衡化;

代码:

复制代码
    Image1=im2double(imread('lotus.bmp'));
    gray=rgb2gray(Image1);
    NewImage2=histeq(gray);
    figure,imshow(NewImage2),title('直方图均衡化');

结果:

在这里插入图片描述

(4)对gray进行伪彩色增强;

代码:

复制代码
    Image1=im2double(imread('lotus.bmp'));
    gray=rgb2gray(Image1);
    NewImage3=zeros(h,w,3);
    for x=1:w
    for y=1:h
        if gray(y,x)<64/256
            NewImage3(y,x,1)=0;
            NewImage3(y,x,2)=4*gray(y,x);
            NewImage3(y,x,3)=1;
        elseif gray(y,x)<128/256
            NewImage3(y,x,1)=0;
            NewImage3(y,x,2)=1;
            NewImage3(y,x,3)=2-4*gray(y,x);
        elseif gray(y,x)<192/256
            NewImage3(y,x,1)=4*gray(y,x)-2;
            NewImage3(y,x,2)=1;
            NewImage3(y,x,3)=0;
        else
            NewImage3(y,x,1)=1;
            NewImage3(y,x,2)=4-4*gray(y,x);
            NewImage3(y,x,3)=0;
        end
    end
    end
    figure,imshow(NewImage3),title('伪彩色增强');

结果:

在这里插入图片描述

(5)对gray添加噪声并平滑;

代码:

复制代码
    Image1=im2double(imread('lotus.bmp'));
    gray=rgb2gray(Image1);
    noiseIsp=imnoise(gray,'salt & pepper',0.1);            
    noiseIg=imnoise(gray,'gaussian');  
    result1=medfilt2(noiseIsp); 
    result2=medfilt2(noiseIg);
    figure;
    subplot(121),imshow(result1),title('椒盐噪声3×3中值滤波');
    subplot(122),imshow(result2),title('高斯噪声3×3中值滤波');

结果:

在这里插入图片描述

(6)对gray利用Sobel算子锐化;

代码:

复制代码
    Image1=im2double(imread('lotus.bmp'));
    gray=rgb2gray(Image1);
    H1=[-1 -2 -1;0 0 0;1 2 1]; 
    H2=[-1 0 1;-2 0 2;-1 0 1];  
    R1=imfilter(gray,H1);    
    R2=imfilter(gray,H2);
    edgeImage=abs(R1)+abs(R2);    
    sharpImage=gray+edgeImage;               
    figure;
    subplot(121),imshow(edgeImage),title('Sobel梯度图像');             
    subplot(122),imshow(sharpImage),title('Sobel锐化图像');

结果:

在这里插入图片描述

(7)拓展内容

(1)对以上处理变换参数,查看处理效果;

代码:

复制代码
    Image1=im2double(imread('lotus1.bmp'));
    gray=rgb2gray(Image1);
    noiseIsp=imnoise(gray,'salt & pepper',0.05);            
    noiseIg=imnoise(gray,'gaussian',0.15);  
    result1=medfilt2(noiseIsp); 
    result2=medfilt2(noiseIg);
    figure;
    subplot(121),imshow(result1),title('椒盐噪声3×3中值滤波(参数0.05)');
    subplot(122),imshow(result2),title('高斯噪声3×3中值滤波(参数0.15)');

结果:

在这里插入图片描述

(2)更改伪彩色增强方法为热金属编码或彩虹编码;

热金属编码
代码:

复制代码
    Image1=imread('lotus.bmp');
     
    %转换为灰度
    gray=rgb2gray(Image1);
    [h,w]=size(gray);
    %新图像的矩阵
    NewImage4=zeros(h,w,3);
    for x=1:h
    for y=1:w
        if gray(x,y)<64
        NewImage4(x,y,1)=0;
        elseif gray(x,y)<128
        NewImage4(x,y,1)=255*(gray(x,y)-64)/64;
        else
        NewImage4(x,y,1)=255;
        end
    end
    end
    for x=1:h
    for y=1:w
        if gray(x,y)<128
        NewImage4(x,y,2)=0;
        elseif gray(x,y)<192
        NewImage4(x,y,2)=255*(gray(x,y)-128)/64;
        else
        NewImage4(x,y,2)=255;
        end
    end
    end
    for x=1:h
    for y=1:w
        if gray(x,y)<64
        NewImage4(x,y,3)=255*gray(x,y)/64;
        elseif gray(x,y)<96
        NewImage4(x,y,3)=255;
        elseif gray(x,y)<128
        NewImage4(x,y,3)=255*(128-gray(x,y))/32;
        elseif gray(x,y)<192 
        NewImage4(x,y,3)=0;
        else
        NewImage4(x,y,3)=255*(gray(x,y)-192)/64;
        end
    end
    end
    imshow(NewImage4),title('热金属编码')

结果:

在这里插入图片描述

彩虹编码
代码:

复制代码
    Image1=imread('lotus1.bmp');
    
    %转换为灰度
    gray=rgb2gray(Image1);
    [h,w]=size(gray);
    %新图像的矩阵
    NewImage3=zeros(h,w,3);
    for x=1:h
    for y=1:w
        if gray(x,y)<96
        NewImage3(x,y,1)=0;
        elseif gray(x,y)<128
        NewImage3(x,y,1)=255*(gray(x,y)-96)/32;
        else
        NewImage3(x,y,1)=255;
        end
    end
    end
    for x=1:h
    for y=1:w
        if gray(x,y)<32
        NewImage3(x,y,2)=0;
        elseif gray(x,y)<64
        NewImage3(x,y,2)=255*(gray(x,y)-32)/32;
        elseif gray(x,y)<128
        NewImage3(x,y,2)=255;
        elseif gray(x,y)<192
        NewImage3(x,y,2)=255*(192-gray(x,y))/64;
        else
        NewImage3(x,y,2)=255*(gray(x,y)-192)/64;
        end
    end
    end
    for x=1:h
    for y=1:w
        if gray(x,y)<32
        NewImage3(x,y,3)=255*gray(x,y)/32;
        elseif gray(x,y)<64
        NewImage3(x,y,3)=255;
        elseif gray(x,y)<96
        NewImage3(x,y,3)=255*(96-gray(x,y))/32;
        elseif gray(x,y)<192 
        NewImage3(x,y,3)=0;
        else
        NewImage3(x,y,3)=255*(gray(x,y)-192)/64;
        end
    end
    end
    imshow(NewImage3),title('彩虹编码')

结果:

在这里插入图片描述

(3)设计不同的平滑滤波、锐化滤波方法,查看处理效果;

平滑滤波
代码:

复制代码
    Image1=im2double(imread('lotus.bmp'));
    gray=rgb2gray(Image1); 
    noisegaus=imnoise(gray,'gaussian'); %高斯噪声 
    figure; 
    subplot(121),imshow(gray),title('原图'); 
    subplot(122),imshow(noisegaus),title('高斯噪声图'); 
    result1=filter2(fspecial('average',3),noisegaus); 
    figure; 
    imshow(result1),title('3*3 均值滤波');
    gausFilter=fspecial('gaussian',[2*3+1 2*3+1],0.6); 
    result2 = imfilter(noisegaus,gausFilter,'conv'); 
    figure; 
    imshow(result2),title('sigmal=0.6 高斯滤波');
    result3 = medfilt2(noisegaus); 
    figure; 
    imshow(result3),title('3*3 中值滤波'); 
     
    image2 = imread('lotus.bmp'); 
    image2 = imnoise(image2,'gaussian'); 
    Fimage = fftshift(fft2(double(image2))); 
    [N M] = size(Fimage); 
    g = zeros(N,M); 
    r1 = floor(M/2); r2=floor(N/2); 
    d0 = [5 11 45 68]; 
    for i = 1:4 
    for x = 1:M 
        for y = 1:N 
            d = sqrt((x-r1)^2+(y-r2)^2); 
            if d<=d0(i) 
                h=1; 
            else
                h=0;
            end
            g(y,x) = h*Fimage(y,x); 
        end
    end
    g = real(ifft2(ifftshift(g))); 
    figure,imshow(uint8(g)),title(['理想低通滤波 D0=',num2str(d0(i))]); 
    end

结果:

在这里插入图片描述
在这里插入图片描述

3*3 中值滤波

在这里插入图片描述

锐化滤波
代码:

复制代码
    Image1=im2double(imread('lotus.bmp'));
    gray=rgb2gray(Image1);
    H1=[-1 -2 -1;0 0 0;1 2 1];
    H2=[-1 0 1;-2 0 2;-1 0 1];
    R1=imfilter(gray,H1);
    R2=imfilter(gray,H2);
    edgeImage=abs(R1)+abs(R2); 
    sharpImage=gray+edgeImage; 
    figure; 
    subplot(121),imshow(edgeImage),title('Sobel 梯度图像'); 
    subplot(122),imshow(sharpImage),title('Sobel 锐化图像 ');
    H1=[1 0;0 -1]; H2=[0 1;-1 0]; R1=imfilter(gray,H1); 
    R2=imfilter(gray,H2); edgeImage=abs(R1)+abs(R2);
    sharpImage=gray+edgeImage; 
    figure; subplot(121),imshow(edgeImage),title('Roberts 梯度图像 '); 
    subplot(122),imshow(sharpImage),title('Roberts 锐化图像 ');
    H1=[-1 -1 -1;0 0 0;1 1 1];
    H2=[-1 0 1;-1 0 1;-1 0 1]; 
    R1=imfilter(gray,H1); 
    R2=imfilter(gray,H2); 
    edgeImage=abs(R1)+abs(R2); 
    sharpImage=gray+edgeImage; 
    figure; 
    subplot(121),imshow(edgeImage),title('Prewitt 梯度图像 '); 
    subplot(122),imshow(sharpImage),title('Prewitt 锐化图像 ');
    H = fspecial('laplacian',0);
    R = imfilter(gray,H); 
    edgeImage = abs(R); 
    H1 = [0 -1 0;-1 5 -1;0 -1 0]; 
    sharpImage = imfilter(gray,H1);
    figure;
    subplot(121),imshow(edgeImage),title('Laplacian 滤波图 像'); 
    subplot(122),imshow(sharpImage),title('Laplacian锐化图 像');
    BW = edge(gray,'log'); 
    H = fspecial('log',7,1); 
    R = imfilter(gray,H); 
    edgeImage = abs(R); 
    sharpImage = gray+edgeImage; 
    figure;
    subplot(131),imshow(BW),title('LOG 边缘检测图像'); 
    subplot(132),imshow(edgeImage),title('LOG 梯度图像'); 
    subplot(133),imshow(sharpImage),title('LOG 锐化图像');
    BW = edge(gray,'canny');
    figure; 
    imshow(BW),title('Canny 边缘检测');

结果:
Sobel 算子效果图

在这里插入图片描述

Roberts 算子效果图

在这里插入图片描述

Prewitt 算子效果图

在这里插入图片描述

Laplacian 算子效果图

在这里插入图片描述

LOG 算子效果图

在这里插入图片描述

Canny 算子效果图

在这里插入图片描述

(4)自行设计方法,实现对彩色图像增强处理。

对一张图片进行处理、主要处理方向包括两部分:一部分是提升图片亮度、另一部分则是提升图片对比度。

复制代码
    clear all;
    close all;
    RGB=imread('lotus.bmp');
    HSV=rgb2hsv(RGB);
    H=HSV(:,:,1);
    S=HSV(:,:,2);
    V=HSV(:,:,3);
    figure;
    subplot(1,3,1),imhist(H);
    subplot(1,3,2),imhist(S);
    subplot(1,3,3),imhist(V);
    V=histeq(V);
    figure,imhist(V);
    HSV(:,:,1)=H;
    HSV(:,:,2)=S;
    HSV(:,:,3)=V;
    RGB_1=hsv2rgb(HSV);
    figure;
    subplot(1,2,1),imshow(RGB);
    subplot(1,2,2),imshow(RGB_1);

结果:

在这里插入图片描述

第二种方法 就是对RGB三个通道直接进行直方图均衡化。
代码:

复制代码
    clear all;
    close all;
    RGB=imread('lotus.bmp');
    R=double((RGB(:,:,1)))/255;
    G=double((RGB(:,:,2)))/255;
    B=double((RGB(:,:,3)))/255;
    figure;
    subplot(1,3,1),imshow(R);
    subplot(1,3,2),imshow(G);
    subplot(1,3,3),imshow(B);
    R=histeq(R);
    G=histeq(G);
    B=histeq(B);
    RGB_1(:,:,1)=R;
    RGB_1(:,:,2)=G;
    RGB_1(:,:,3)=B;
    figure;
    subplot(1,2,1),imshow(RGB);
    subplot(1,2,2),imshow(RGB_1),brighten(0.6);
    figure;
    subplot(1,3,1),imhist(R);
    subplot(1,3,2),imhist(G);
    subplot(1,3,3),imhist(B);

结果:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

当前所采用的技术就是第三种方法

复制代码
    clear all;
    close all;
    clc;
    RGB=imread('lotus.bmp');
    [row,column,n]=size(RGB);
    R=RGB(:,:,1);
    G=RGB(:,:,2);
    B=RGB(:,:,3);
    for i=1:row
    for j=1:column
    juzhen=[R(i,j),G(i,j),B(i,j)];
    intensity_1(i,j)=0.2989*R(i,j)+0.587*G(i,j)+0.114*B(i,j);
    intensity_2(i,j)=1/3*(R(i,j)+G(i,j)+B(i,j));
    intensity_3(i,j)=max(juzhen);
    end
    end
    figure,
    subplot(2,2,1),imshow(rgb2gray(RGB));
    subplot(2,2,2),imshow(intensity_1);
    subplot(2,2,3),imshow(intensity_2);
    subplot(2,2,4),imshow(intensity_3);
    Pre_image=intensity_3;
    figure;
    subplot(2,2,1),imshow(intensity_3);
    subplot(2,2,2),imhist(intensity_3);
    subplot(2,2,3),imshow(Pre_image);
    subplot(2,2,4),imhist(Pre_image);
    Pre_image=im2uint8(Pre_image);
    [height,width]=size(Pre_image);
    XT=round(mean(mean(Pre_image)));
    h = zeros(1,256);%统计各灰度数目,共256个灰度级
    for m = 1:height
    for n = 1: width
    h(Pre_image(m,n) + 1) = h(Pre_image(m,n) + 1) + 1;%对应灰度值像素点数量增加一
    end
    end
    SH1=0;
    SH2=0;
    for x=0:XT
    SH1=SH1+h(x+1);
    end
    for x=(XT+1):255
    SH2=SH2+h(x+1);
    end
    N=height*width;
    RSH1=SH1/N;
    RSH2=SH2/N;
    SEP_P=round(255*RSH1);
    DRH1_start=0;
    DRH1_end=SEP_P;
    DRH2_start=SEP_P+1;
    DRH2_end=255;
    sum1=0;
    CH1=zeros(1,256);
    for x_1=0:XT
    sum1=sum1+h(x_1+1);
    CH1(x_1+1)=sum1/SH1;
    end;
    sum2=0;
    CH2=zeros(1,256);
    for x_2=(XT+1):255
    sum2=sum2+h(x_2+1);
    CH2(x_2+1)=sum2/SH2;
    end
    for i=1:height
    for j=1:width
    if Pre_image(i,j)
    h(Pre_image(i,j)+1)=DRH1_start+(DRH1_end-DRH1_start)*CH1(Pre_image(i,j)+1);
    else
    h(Pre_image(i,j)+1)=DRH2_start+(DRH2_end-DRH2_start)*CH2(Pre_image(i,j)+1);
    end
    end
    end
    for i=1:height
    for j=1:width
    Aft_image(i,j)=h(Pre_image(i,j)+1);
    end
    end
    Aft_image=uint8(Aft_image);
    subplot(1,2,1),imhist(Aft_image);
    subplot(1,2,2),imshow(Aft_image);
    for i=1:height
    for j=1:width
    Alpha(i,j)=double(Aft_image(i,j))./double(intensity_3(i,j));
    end
    end
    intensity_R=Alpha.*double(R);
    intensity_G=Alpha.*double(G);
    intensity_B=Alpha.*double(B);
    RGB_1(:,:,1)=intensity_R;
    RGB_1(:,:,2)=intensity_G;
    RGB_1(:,:,3)=intensity_B;
    figure,
    subplot(1,2,2),imshow(uint8(RGB_1));
    subplot(1,2,1),imshow(RGB);

结果:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

六、实验总结

1. 图像锐化
(1)图像锐化(Sharpening):在图像传输或变换过程中(如未聚焦好)受到各种干扰而退化的情况下(如模糊),通常需要通过增强目标物体的轮廓和边缘信息来提高判读效果与识别能力。
(2)细节增强:主要通过增强图像中的轮廓边沿以及细节部分(即灰度跳变区域),使景物边界清晰完整;对于原本模糊或边缘与轮廓不清晰的图像则能恢复出清晰边界;实现此功能的方法称为空域高通滤波技术(形象地称为勾边处理)。
从数学角度而言,在退化的状态下应用平均或者积分运算后需恢复原始细节,则需要使用其逆运算——微分运算——强化高频分量以恢复原始细节信息;这里我们采用的是matlab中的edge函数及其内部实现原理:
Sobel算子是以单个像素为中心取其周围的3×3像素矩阵与以下两个模板[-1 -2 -1; 0 0 0; 1 2 1]以及[-1 0 1;-2 0 2;-1 0 1]进行点乘并求和后存入该像素点处;
Canny算子则首先对原图执行高斯平滑处理以便消除噪声干扰,在计算梯度幅值及方向后应用非极大值抑制算法,并通过双阈值检测并连接边沿;
拉普拉斯算子则采用二阶微分方法,在计算每个像素点处的值时使用以下模板img2(i,j,k) = img1(i+1,j,k) + img1(i-1,j,k) + img1(i,j+1,k) + img1(i,j-1,k) -4*img1(i,j,k)来进行计算。

2. 伪彩色处理

3.图像增强
图像增强的目的:(1)利用一系列技术改善图像的视觉效果,提高图像清晰度。(2)将图像转换为一种更适合人或机器进行分析处理的形式,抑制无用信息,提高图像使用价值。
图像增强从作用域划分为:空间域增强、频率域增强、彩色增强。
其中,空间域增强是直接对图像像素灰度进行操作。包括:点运算和局部运算。
频率域是经过傅里叶变换后对图像频谱进行操作,最后进行逆变换得到结果。
点运算包括:灰度变换、直方图修正法和局部统计法。
1.灰度变换
灰度变换使得图像的动态范围增大,增强对比度,让图像变得更清晰,特征更明显。
其中包括:线性变换、分段线性变换、非线性灰度变换。
(1)线性变换
图像的灰度集中在较亮的区域而导致图像偏亮,这个时候可以对图像的每一个像素灰度作线性拉伸。
原图像f(i,j)的灰度范围为[a,b],线性变换后图像g(i,j)的范围为[a1,b1]

全部评论 (0)

还没有任何评论哟~