#include <iostream>
#include <stdio.h>
#include <cv.h>
#include <cvaux.h>
#include <highgui.h>
#include <cstdio>
#include "stdio.h"
#include "histo.h"
using namespace std;
int main()
{
IplImage *img=cvLoadImage("image2.jpg");
int nl,nc,i,j;
nl=img->height;
nc=img->width;
unsigned char H[nl*nc];
IplImage *hsv;
hsv=cvCloneImage(img);
cvCvtColor(img,hsv,CV_BGR2HSV);
CvScalar pixel1;
for(i=0;i<nl;i++)
{
for(j=0;j<nc;j++)
{
pixel1=cvGet2D(hsv,i,j);
H[i*nc+j]=pixel1.val[0];
}
}
IplImage*Img_H=cvCreateImage(cvGetSize(img),img->depth,1);
for(i=0;i<nl;i++)
{
for(j=0;j<nc;j++)
{
pixel1.val[0]=H[i *nc+j];
cvSet2D(Img_H,i,j,pixel1);
}
}
cvNamedWindow("image2",CV_WINDOW_AUTOSIZE);
cvShowImage("image2",Img_H);
cvWaitKey(0);
int K,L,nlb,ncb,tailleB;
printf("Donner K!!\n");
printf("K=");
scanf("%d",&K);
printf("Donner L!!!\n");
printf("L=");
scanf("%d",&L);
nlb=nl/K;
ncb=nc/L;
tailleB=nlb*ncb;
unsigned char BH[tailleB];
int TI[K*L],x;
unsigned char Hr[nl*nc],Hv[nl*nc],Hb[nl*nc];
int u=0,v=0,m,indice=0,c=0;
int Nbin;
printf("Nbin=");
scanf("%d",& Nbin);
float HHb[Nbin],mx;
for(u=0;u<K;u++)
{
for (v=0;v<L;v++)
{
for(i=0;i<nlb;i++)
{
for(j=0;j<ncb;j++)
{ m=(u*nlb+i)*nc+(v*ncb+j);
BH[i*ncb+j]=H[m];
}
}
if (i==nlb)
{
histo(BH,tailleB,Nbin,HHb);
mx=HHb[0];
for (i=0;i<Nbin;i++)
{
// printf("HHB[%d]= %f\n",i,HHb[i]);
if (HHb[i]>mx)
{
mx=HHb[i];
}
}
//printf("max= %f\n",mx);
int kk=0;
for (kk=0;kk<Nbin;kk++)
{
if (HHb[kk]==mx)
break;
}
indice=kk;
//printf("indice= %d\n",indice);
TI[c]=indice;
c++;
}
}
}
int bb;
// for (bb=0;bb<K*L;bb++)
// {
// printf("indice[%d]=%d\n",bb,TI[bb]);
// }
int IH[nl][nc],iii,ii,jj,jjj;
//
int b=-1;
for(u=0;u<K;u++)
{
for (v=0;v<L;v++)
{
b=b+1;
ii=u*nlb;
iii=(u+1)*nlb;
for(i=ii;i<iii;i++)
{
jj=v*ncb;
jjj=(v+1)*ncb;
for(j=jj;j<jjj;j++)
{
// printf("b=%d\n",b);
IH[i][j]=((TI[b]+1)*(255/Nbin))-(255/(2*Nbin));
}
}
}
}
IplImage *imgH=cvCreateImage(cvGetSize(img),img->depth,1);
CvScalar pixelh;
for(i=0;i<nl;i++)
{
for(j=0;j<nc;j++)
{
pixelh.val[0]=IH[i][j];
cvSet2D(imgH,i,j,pixelh);
}
}
cvNamedWindow("image2",CV_WINDOW_AUTOSIZE);
cvShowImage("image2",imgH);
cvWaitKey(0);
}