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

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

图像增强

图像增强的方法是通过一定手段对原图像附加一些信息或变换数据,有选择地突出图像中感兴趣的特征或者抑制(掩盖)图像中某些不需要的特征,使图像与视觉响应特性相匹配。

图像对比度

图像对比度计算方式如下:
C = ∑ δ δ ( i , j ) P δ ( i , j ) C=\displaystyle\sum_{{\delta}}\delta(i,j)P_\delta(i,j) C=δδ(i,j)Pδ(i,j)
其中, δ ( i , j ) = ∣ i − j ∣ \delta(i,j)=\lvert i-j\rvert δ(i,j)=ij,即相邻像素间的灰度差; P δ ( i , j ) P_\delta(i,j) Pδ(i,j)为相邻像素灰度差为 δ \delta δ的像素分布概率。可以是四邻域,也可以是八邻域。具体过程如下:
原始图像为:
L = [ 1 3 5 2 1 3 3 6 0 ] L=\begin{bmatrix} 1 & 3 &5\\ 2 & 1 &3 \\ 3 & 6&0 \end{bmatrix} L= 123316530
按照四邻域进行计算,对比度 C L = [ ( 1 2 + 2 2 ) + ( 2 2 + 2 2 + 2 2 ) + ( 1 2 + 1 2 + 1 2 ) + ( 2 2 + 2 2 + 1 2 + 5 2 ) + ( 2 2 + 2 2 + 3 2 ) + ( 1 2 + 3 2 ) + ( 5 2 + 3 2 + 6 2 ) + ( 3 2 + 6 2 ) / 22 C_L=\lbrack(1^2+2^2)+(2^2+2^2+2^2)+(1^2+1^2+1^2)+(2^2+2^2+1^2+5^2)+(2^2+2^2+3^2)+(1^2+3^2)+(5^2+3^2+6^2)+(3^2+6^2)/22 CL=[(12+22)+(22+22+22)+(12+12+12)+(22+22+12+52)+(22+22+32)+(12+32)+(52+32+62)+(32+62)/22。22就是平方的个数。

1.对比度展宽

对比度展宽的目的是通过增强图像的亮暗对比程度而改善画质,使图像的显示效果更加清晰。

线性对比度展宽

通过抑制非重要信息的对比度来腾出空间给重要信息进行对比度的展宽。
数字图像处理(番外)图像增强,数字图像处理,图像处理,对比度展宽,图像增强
原图的灰度为 f ( i , j ) f(i,j) f(i,j),处理后的图像灰度为 g ( i , j ) g(i,j) g(i,j)。原图中的重要景物的灰度分布假设分布在 [ f a , f b ] \lbrack f_a,f_b\rbrack [fa,fb]的范围内,则对比度线性展宽的目的是使处理后图像的重要景物的灰度分布在 [ g a , g b ] \lbrack g_a,g_b\rbrack [ga,gb]的范围内,当 Δ f = ( f b − f a ) < Δ g = ( g b − g a ) \varDelta f=(f_b-f_a)<\varDelta g=(g_b-g_a) Δf=(fbfa)<Δg=(gbga),则可达到对比度展宽的目的。
计算方式如下:
g ( i , j ) = { α f ( i , j )   0 ≤ f ( i , j ) < a β ( f ( i , j ) − a ) + g a   a ≤ f ( i , j ) < b γ ( f ( i , j ) − b ) + g b b ≤ f ( i , j ) < 255 g(i,j)= \begin{cases} \alpha f(i,j) &\text{ } 0\le f(i,j)<a \\ \beta (f(i,j)-a)+g_a &\text{ } a\le f(i,j)<b \\ \gamma (f(i,j)-b)+g_b &b\le f(i,j)<255 \end{cases} g(i,j)= αf(i,j)β(f(i,j)a)+gaγ(f(i,j)b)+gb 0f(i,j)<a af(i,j)<bbf(i,j)<255
其中, α = g a f a , β = g b − g a f b − f a , γ = 255 − g b 255 − f b \alpha =\frac{g_a}{f_a},\beta =\frac{g_b-g_a}{f_b-f_a},\gamma =\frac{255-g_b}{255-f_b} α=faga,β=fbfagbga,γ=255fb255gb
C++代码如下:

    cv::Mat image = cv::imread("Lena.bmp");
    cv::Mat grayImage(image.size(), CV_8UC1);
    cv::Mat dstImage(grayImage.size(), CV_8UC1);
    cv::cvtColor(image, grayImage, CV_BGR2GRAY);
    int fa = 50, fb = 100;
    float ga = 30, gb = 120;
    for (int row = 0; row < grayImage.rows; row++)
    {
        uchar *currentData = grayImage.ptr<uchar>(row);
        for (int col = 0; col < grayImage.cols; col++)
        {
            if (*(currentData + col) >= 0 && *(currentData + col) < fa)
            {
                dstImage.at<uchar>(row, col) = uchar(ga / fa * (*(currentData + col)));
            }
            if (*(currentData + col) >= fa && *(currentData + col) < fb)
            {
                dstImage.at<uchar>(row, col) = uchar((gb-ga) / (fb-fa) * (*(currentData + col)-fa)+ga);
            }
            if (*(currentData + col) >= fb && *(currentData + col) < 255)
            {
                dstImage.at<uchar>(row, col) = uchar((255-gb) / (255-fb) * (*(currentData + col)-fb)+gb);
            }
        }
        //currentData++;
    }

结果如下:
数字图像处理(番外)图像增强,数字图像处理,图像处理,对比度展宽,图像增强

非线性对比度展宽

通过一个光滑的映射曲线,使得处理后图像的灰度变化比较光滑。计算公式如下:
g ( i , j ) = c ⋅ l g ( 1 + f ( i , j ) ) g(i,j)=c\cdot lg(1+f(i,j)) g(i,j)=clg(1+f(i,j))
实际上完成的作用是,抑制高亮度区域,扩展低亮度区域。

2.直方图均衡化

在信息论中有这样一个结论:当数据的分布接近均匀分布的时候,数据所承载的信息量(熵)为最大。
灰度直方图的基本原理是:对在图像中像素个数多的灰度级(即对画面起主要作用的灰度值)进行展宽,而对像素个数少的灰度值(即对画面不起主要作用的灰度值)进行归并。
直方图均衡化方法的具体步骤如下:

  1. 求出原图 f ( i , j ) M × N f(i,j)_{M\times N} f(i,j)M×N的灰度直方图,设用256维的向量 h f h_f hf表示;
  2. h f h_f hf求原图的灰度分布概率,记作 p f p_f pf,则有 p f ( i ) = 1 N f ⋅ h f ( i ) , i = 0 , 1 , … , 255 p_f(i)=\frac{1}{N_f}\cdot h_f(i),i=0,1,\dots ,255 pf(i)=Nf1hf(i),i=0,1,,255
    其中, N f = M × N N_f=M\times N Nf=M×N M , N M,N M,N分别为图像的长和宽)为图像的总像素个数;
  3. 计算图像各个灰度值的累计分布概率,记作 p a p_a pa,则有 p a ( i ) = ∑ k = 0 i p f ( k ) , i = 1 , 2 , … , 255 p_a(i)=\displaystyle\sum_{k=0}^ip_f(k),i=1,2,\dots ,255 pa(i)=k=0ipf(k),i=1,2,,255
    其中,令 p a ( 0 ) = 0 p_a(0)=0 pa(0)=0
  4. 进行直方图均衡化计算,得到处理后图像的像素值 g ( i , j ) g(i,j) g(i,j)为: g ( i , j ) = 255 ⋅ p a ( k ) g(i,j)=255\cdot p_a(k) g(i,j)=255pa(k)

C++代码如下所示:

    cv::Mat image = cv::imread("Lena.bmp");
    cv::Mat src(image.size(), CV_8UC1);
    //转为灰度图像
    cv::cvtColor(image, src, CV_BGR2GRAY);

    cv::Mat dst(image.size(), CV_8UC1);
    float hf[256] = { 0 };
    for (int row = 0; row < src.rows; row++)
    {
        uchar *currentData = src.ptr<uchar>(row);
        for (int col = 0; col < src.cols; col++)
        {
            hf[*(currentData + col)] += 1;
        }
    }
    float pf[256] = { 0 };
    for (int i = 0; i < 256; i++)
    {
        pf[i] = hf[i] / (src.rows*src.cols);
    }
    float pa[256] = { 0 };
    for (int i = 1; i < 256; i++)
    {
        float sumNumber = 0;
        for (int j = 0; j < i+1; j++)
        {
            sumNumber += pf[j];
        }
        pa[i] = sumNumber;
    }
    for (int row = 0; row < dst.rows; row++)
    {
        uchar * currentData = dst.ptr<uchar>(row);
        for (int col = 0; col < dst.cols; col++)
        {
            *(currentData + col) = uchar(255 * pa[src.at<uchar>(row, col)]);
        }
    }

结果展示:
数字图像处理(番外)图像增强,数字图像处理,图像处理,对比度展宽,图像增强文章来源地址https://www.toymoban.com/news/detail-619744.html

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

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

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

相关文章

  • opencv-图像对比度增强

    对比度增强,即将图片的灰度范围拉宽,如图片灰度分布范围在[50,150]之间,将其范围拉升到[0,256]之间。这里介绍下 线性变换,直方图正规化,伽马变换,全局直方图均衡化,限制对比度自适应直方图均衡化等算法。 线性变换 通过函数y=ax+b对灰度值进行处理,例如对于过暗

    2024年01月16日
    浏览(39)
  • 数字图像处理:实验三 图像增强

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

    2024年02月04日
    浏览(36)
  • Python实现图像对比度增强

    Python实现图像对比度增强 在数字图像处理中,对比度增强被广泛运用于图像增强、图像去噪、特征提取等领域。本文将用Python实现一种简单的图像对比度增强方法,并提供源代码。 首先,我们需要导入必要的库:numpy和OpenCV。在执行之前确保已安装这两个库。 以下是我们实

    2024年02月07日
    浏览(32)
  • matlab数字图像处理之图像增强

    图像处理 基本目的之一是改善图像质量,而改善图像最常用的技术是图像增强的目的是为了改善图像的视觉效果,使图像更加清晰,便于人和计算机对图像进一步的分析和处理 图像质量 的基本含义是指人们对一幅图像视觉感受的评价。图像增强的目的就是为了改善图像显示

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

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

    2023年04月16日
    浏览(79)
  • 【数字图像处理】实验二 图像增强(MATLAB实现)

    目录 一、实验意义及目的 二、实验内容 三、Matlab 相关函数介绍 四、算法原理 五、参考代码及扩展代码流程图  (1)参考代码流程图 (2)扩展代码流程图 六、参考代码 七、实验要求 (1)对以上处理变换参数,查看处理效果; (2)更改伪彩色增强方法为热金属编码或彩

    2023年04月12日
    浏览(65)
  • 【数字图像处理】实验(2)——图像增强(MATLAB实现)

    (1)进一步掌握图像处理工具Matlab,熟悉基于Matlab的图像处理函数。 (2)掌握各种图像增强方法。 1.打开一幅彩色图像Image1,使用Matlab图像处理函数,对其进行下列变换: (1)将Image1灰度化为gray,统计并显示其灰度直方图; (2)对gray进行分段线性变换; (3)对gray进行

    2023年04月23日
    浏览(40)
  • (数字图像处理MATLAB+Python)第五章图像增强-第四、五节:基于模糊技术和基于伪彩色处理的图像增强

    图像的模糊特征平面 :假设原始图像为 I ( x , y ) I(x,y) I ( x , y ) ,其中 x x x 和 y y y 分别表示图像的水平和垂直方向的坐标。模糊特征平面可以表示为 B ( x , y , θ ) B(x,y,theta) B ( x , y , θ ) ,其中 θ theta θ 是一个旋转角度参数,表示模糊核函数的旋转角度。 B ( x , y , θ ) B(x,

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

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

    2024年02月09日
    浏览(28)
  • (数字图像处理MATLAB+Python)第五章图像增强-第二节:基于直方图修正的图像增强

    基于直方图修正的图像增强 :是一种常见的图像处理方法。该方法通过对图像的像素值分布进行调整,以改善图像的对比度和亮度等视觉效果。具体地,直方图校正方法将图像的像素值转换为一个新的值域范围,使得像素值的分布更加均匀,从而增强图像的细节和对比度。这

    2023年04月19日
    浏览(32)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包