• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            coreBugZJ

            此 blog 已棄。

            數(shù)字圖像處理上機(jī)之三:直方圖均衡化

            灰度直方圖(histogram)是灰度級(jí)的函數(shù),它表示圖象中具有每種灰度級(jí)的象素的個(gè)數(shù),反映圖象中每種灰度出現(xiàn)的頻率。灰度直方圖的橫坐標(biāo)是灰度級(jí),縱坐標(biāo)是該灰度級(jí)出現(xiàn)的頻率。

            直方圖均衡化是通過(guò)灰度變換將一幅圖像轉(zhuǎn)換為另一幅具有均衡直方圖,即在每個(gè)灰度級(jí)上都具有相同的象素點(diǎn)數(shù)的過(guò)程。

            對(duì)于離散圖像,轉(zhuǎn)換公式為

            D = f( d ) = ( H0 + H1 + H2 + ... + Hd ) * Dmax / A0;

            其中 Hi為第 i 級(jí)灰度的像素個(gè)數(shù),A0 為圖像面積,Dmax 為最大灰度值。





            原圖





            原圖灰度直方圖







            均衡化后





            均衡化后灰度直方圖


            1/*
            2ProcessGrayZ.h
            3
            4Copyright (C) 2011, coreBugZJ, all rights reserved.
            5
            6256級(jí)灰度圖處理(灰度直方圖,直方圖均衡化)。
            7*/

            8
            9
            10#ifndef __PROCESSGRAY_Z_H_INCLUDED__
            11#define __PROCESSGRAY_Z_H_INCLUDED__
            12
            13
            14#include "TypeZ.h"
            15#include "ClassImageZ.h"
            16
            17
            18#define GRAY_NUM_Z 256
            19
            20
            21 /* 獲得灰度直方圖數(shù)據(jù) */
            22 /* 參數(shù) hist 要求數(shù)組大小至少256個(gè)元素 */
            23PublicFuncZ R32 getHistogramZ( cImageZ src, U32 hist[] );
            24 /* 創(chuàng)建 256 * 256 黑白圖像,為繪制好的灰度直方圖 */
            25PublicFuncZ ImageZ createImageHistogramZ( cImageZ src );
            26 /* 創(chuàng)建 直方圖均衡化 后的新圖像 */
            27PublicFuncZ ImageZ createImageHistogramEqualizationZ( cImageZ src );
            28
            29
            30#endif /* __PROCESSGRAY_Z_H_INCLUDED__ */
            31



            1/*
            2ProcessGrayZ.c
            3
            4Copyright (C) 2011, coreBugZJ, all rights reserved.
            5
            6256級(jí)灰度圖處理(灰度直方圖,直方圖均衡化)。
            7*/

            8
            9
            10#include "stdafx.h"
            11#include "ProcessGrayZ.h"
            12
            13#include <string.h>
            14
            15
            16PublicFuncZ R32 getHistogramZ( cImageZ src, U32 hist[] ) {
            17 U32 i, x, y;
            18 if ( (NULL == hist) || (!isImageValidZ(src)) || (GRAY_NUM_Z != src->colorNum) ) {
            19 return RERR;
            20 }

            21 for ( i = 0; i < GRAY_NUM_Z; ++i ) {
            22 hist[ i ] = 0;
            23 }

            24 for ( y = 0; y < src->height; ++y ) {
            25 for ( x = 0; x < src->width; ++x ) {
            26 ++hist[ *( src->pPixel + src->linePitch * y + x ) ];
            27 }

            28 }

            29 return ROK;
            30}

            31
            32PublicFuncZ ImageZ createImageHistogramZ( cImageZ src ) {
            33 ImageZ img = NULL;
            34 U32 hist[ GRAY_NUM_Z ], mh, x, y;
            35 ColorZ color;
            36
            37 if ( ROK != getHistogramZ( src, hist ) ) {
            38 return NULL;
            39 }

            40
            41 img = createImageZ( GRAY_NUM_Z, GRAY_NUM_Z, 2 );
            42 if ( NULL == img ) {
            43 return NULL;
            44 }

            45
            46 color.r = color.g = color.b = 0;
            47 color.a = 0;
            48 putImagePaletteColorZ( img, 0, &color );
            49 color.r = color.g = color.b = 255;
            50 color.a = 0;
            51 putImagePaletteColorZ( img, 1, &color );
            52
            53 memset( img->pPixel, 1, img->linePitch * img->height );
            54
            55 mh = 0;
            56 for ( x = 0; x < GRAY_NUM_Z; ++x ) {
            57 if ( mh < hist[ x ] ) {
            58 mh = hist[ x ];
            59 }

            60 }

            61 for ( x = 0; x < GRAY_NUM_Z; ++x ) {
            62 y = hist[ x ] * GRAY_NUM_Z / mh;
            63 y = GRAY_NUM_Z - y;
            64 while ( GRAY_NUM_Z > y ) {
            65 *( img->pPixel + y * img->linePitch + x ) = 0;
            66 ++y;
            67 }

            68 }

            69 return img;
            70}

            71
            72PublicFuncZ ImageZ createImageHistogramEqualizationZ( cImageZ src ) {
            73 U32 hist[ GRAY_NUM_Z ], lut[ GRAY_NUM_Z ], x, y, i;
            74 F64 cdf[ GRAY_NUM_Z ], size, sum, tf, t0, t255;
            75 ImageZ img = NULL;
            76
            77 if ( ROK != getHistogramZ( src, hist ) ) {
            78 return NULL;
            79 }

            80
            81 MOV_F64_U32_Z( size, src->width );
            82 MUL_F64_U32_Z( size, size, src->height );
            83
            84 MOV_F64_U32_Z( sum, 0 );
            85 MOV_F64_U32_Z( t255, 255 );
            86 MOV_F64_U32_Z( t0, 0 );
            87 for ( i = 0; i < GRAY_NUM_Z; ++i ) {
            88 ADD_F64_U32_Z( sum, sum, hist[ i ] );
            89 DIV_F64_Z( cdf[ i ], sum, size );
            90 MUL_F64_Z( tf, cdf[ i ], t255 );
            91 MIN_F64_Z( tf, tf, t255 );
            92 MAX_F64_Z( tf, tf, t0 );
            93 MOV_U32_F64_Z( lut[ i ], tf );
            94 }

            95
            96 img = createImageFromImageInfoZ( src );
            97 if ( NULL == img ) {
            98 return NULL;
            99 }

            100 if ( ROK != copyImagePaletteZ( img, src ) ) {
            101 destroyImageZ( img );
            102 return NULL;
            103 }

            104 for ( y = 0; y < img->height; ++y ) {
            105 for ( x = 0; x < img->width; ++x ) {
            106 *( img->pPixel + y * img->linePitch + x ) =
            107 ( (U08)( lut[ * ( src->pPixel + y * src->linePitch + x ) ]
            108 )
            109 );
            110 }

            111 }

            112 return img;
            113}

            114



            posted on 2011-11-15 18:13 coreBugZJ 閱讀(1672) 評(píng)論(0)  編輯 收藏 引用 所屬分類: VideoImageAlgorithm課內(nèi)作業(yè)

            国产激情久久久久影院| 久久久久久久久久久| 欧美777精品久久久久网| 久久精品二区| 亚洲AV无码久久精品狠狠爱浪潮| 无码国内精品久久人妻| 9191精品国产免费久久| 久久久国产亚洲精品| 久久91精品国产91久久小草| 久久强奷乱码老熟女| 久久久久久久久无码精品亚洲日韩| 久久精品国产亚洲AV电影| 久久久久亚洲AV无码专区桃色 | 精品久久久久久| 波多野结衣久久一区二区| 狠狠色综合网站久久久久久久 | 国产精品欧美久久久久无广告| 久久精品国产亚洲av麻豆图片| 国产成人无码精品久久久久免费 | 亚洲AV日韩精品久久久久| 久久久亚洲精品蜜桃臀| 久久99精品国产| 久久久久亚洲精品无码蜜桃| 伊人久久国产免费观看视频| 久久精品成人一区二区三区| 亚洲国产天堂久久综合网站| 久久99精品久久久久婷婷| 久久婷婷五月综合色奶水99啪| 久久99精品久久久久久水蜜桃| 国产精品久久久福利| 国产三级久久久精品麻豆三级 | 精品久久久久久无码专区| 久久精品卫校国产小美女| 亚洲国产精品无码久久久久久曰| 国产亚州精品女人久久久久久| jizzjizz国产精品久久| 国产精品岛国久久久久| 久久夜色精品国产亚洲| A级毛片无码久久精品免费| 国产免费久久精品丫丫| 精品久久久久久国产免费了|