计算机视觉一些简单图片处理算法

1。显示图片的直方图

这个是把任意彩色图转换成黑白图片,再求其直方图。这些算法都是基于RGB颜色空间的,不过对其他颜色空间操作一样,只是首先得进行空间转换。语言用c++实现;

//彩色图片转换成黑白

void convertColortoGray(image a,image r,image g,image b
    {

UINT i,j;
for
(i=0;i

for(j=0;j a[i][j]=(r[i][j]+g[i][j]+b[i][j])/3.0;
}

//求任意图片的直方图,但是之前必须转换成黑白图片。image d就是显示的直方图

void calculateHistogram(image d, image s)
{

UINT i,j;
UINT arr[
256];
UINT maxVal=
0;
for
(i=0;i<256;i++){
arr[i]=
0;
for(j=0;j<256;j++){
d[i][j]=
255.0;
}
}

for
(i=0;i

for(j=0;j arr[(s[i][j])]++;
}

for(i=0;i<256;i++){

if(arr[i]>maxVal)
maxVal=arr[i];
}

for
(i=0;i<256;i++){

for(j=(255-(256*arr[i]/maxVal));j<256;j++)
d[j][i]=
0.0;
}
}

结果图为:

 

2 实现图片的反色,传的参数为源R G B三个分量图,和目标 R G B分量图,显示目标图即为显示了结果图

 

void negative(image rd, image gd,image bd, image rs,image gs, image bs)
{

UINT i,j;
for
(i=0;i<256;i++)

for(j=0;j<256;j++)
{
rd[i][j]=
255-rs[i][j];
gd[i][j]=
255-gs[i][j];
bd[i][j]=
255-bs[i][j];
}

}

Result:



3.直方图均衡化代码。参数为源和结果图。可以对三个分量图分别处理,我这里的结果是对RBG都均衡化。

void showHequalization(image r,image temp1)

{

int gr[256],gx;
float fr[256],t1[256],normal[256],tempr,rindex,rmin;
//initialize array
for(int h=0;h<256;h++)
{
gr[h]=0;
t1[h]=0;
}
//statistic pixls of each gray level in the pic
for(int i=0;i

for(int j=0;j

{
//red
gx=r[i][j];
gr[gx]++;
}
//get p(r)
for(int h=0;h<256;h++)

{
fr[h]=(float)gr[h]/(256.0*256.0);
//get normalized gray level
normal[h]=h/255.0;
}
//get accuminated value for each grey level
for(int h=1;h<256;h++)

{
fr[h]=fr[h-1]+fr[h];
}
//get mapping between normalized gray level and sk.
for(int h=0;h<256;h++)

{
tempr=fr[h];
rmin=1.0;
for(int k=0;k<256;k++)

{

if(fabs(tempr-normal[k]) {
rmin=fabs(tempr-normal[k]);
rindex=k;

}
}

 

//scan picture and implement mapping
for(int i=0;i

for(int j=0;j {
if(r[i][j]==h) temp1[i][j]=rindex;

}

}

}

结果图:

                  

                原图                                                              结果图

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值