java将灰度图转化为直方图,图像灰度直方图

原理

灰度直方图是数字图像处理中一个最简单、最有用的工具,它描述了一幅图像的灰度级内容 。任何一幅图像的直方图都包括了可观的信息,某些类型的图像可由其直方图完全描述。灰度直方图是灰度值的函数,描述的是图像中具有该灰度值的像素的个数,其横坐标表示像素的灰度级别,纵坐标是该灰度出现的频率 ( 像素个数与图像像素总数之比 )

灰度图代码:

src = dst = (Uint8 *)frameBuffPtr->frame.frameBufferPtr;

for ( i = 0 ; i < inputHeight ; i ++ )

{

for( j = 0 ; j < inputWidth ; j++ ,dst += 2)

*dst = 0x80;  /* CbCr=128,转化灰度图 */

/* statistic the y diginal */

ICETEKDM6437B2Statistic(src + i * inputWidth * 2, inputWidth);

}

/* draw the histogram on screen

第一个参数指出直方图的显示起始位置*/

ICETEKDM6437B2Histogram(src + inputWidth * (inputHeight - HISTOHIGH - 10) * 2 + 50 * 2, inputWidth);

-----------------------------------------------------------------------------------------------

void ICETEKDM6437B2Statistic(unsigned char *src, short pixelCount)

{

int i;

for ( i=0 ; i{

nHisto[src[i * 2 + 1]]++;//y 值构成的数组,统计Y值分布

}

}

-----------------------------------------------------------------------------------------------

void ICETEKDM6437B2Histogram(unsigned char * src, short pixelCount)

{

unsigned char * dst = src;

m_nWork=0;

/* look for the max data */

for ( mi=0 ; mi < HISTOWIDTH ; mi++ )

if ( m_nWork < nHisto[mi] )

m_nWork = nHisto[mi];

/* get the scale */

m_nWork /= (HISTOHIGH - 1);// max/127

/* get the scale count */

for ( mi=0;mi<256;mi++ )

{

nHisto[mi]/=m_nWork;// 此数组用来统计新值 0-127

}

/* draw the histogram 画直方图*/

for(mi = 0 ; mi < HISTOHIGH ; mi++)

{

dst = src;

for(mj = 0 ; mj < HISTOWIDTH ; mj++)

{

/* Set cbcr */

*dst++ = 0x80;//cr=cb=128

if(mi >= (HISTOHIGH - 1 - nHisto[mj]))

/* Set y value*/

*dst++ = HISTOCOLOR;//y=200

else

*dst++ = 1;//y=0

}

src += pixelCount * 2;//下一行

}

js++; js%=2;

for ( mi=0 ; minHisto[mi]=0;//清零

}

阅读(6811) | 评论(0) | 转发(0) |

0

上一篇:图像翻转

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值