witam,
mam problem z moim programem do pracy inżynierskiej. Pisze w bibliotece opencv i mam. Mój program rysuje histogram dla kilku malutkich kwadracików (10x10) wyszczególnionych ze zdjęcia w pętli for. W momencie, gdy trafia na obraz, gdzie jest jakaś linie (krawędź) to histogram jest szeroki, a gdy w tym kwadraciku obraz jest jednolity (np. kawałek ściany) to histogram jest wąski. I tutaj pojawia się problem, ponieważ nie wiem jak napisać, żeby program wybierał z pośród histogramów ten, który histogram na który pojawiła się jakaś krawędź. Poniżej zamieszczam mój program.

#include <cv.h>
#include <highgui.h>

IplImage* image= 0;
IplImage* image1= 0;
IplImage* imgHistogram = 0;
IplImage* gray= 0;

CvHistogram* hist;

int main(){

image1 = cvLoadImage("ks.jpg",1);
cvNamedWindow("original1",1);
cvShowImage( "original1", image1 );

image = cvLoadImage( "ks.jpg",1);
for (int
m=0; m<278; m=m+25)
{
cvSetImageROI(image, cvRect(300,m,10,10)) ;
//okreslenie rozmiaru histogramu (ilości koszy)
int size[] = {256};

//wartość kosza i jego znormalizowana wartość
float val;
int norm;

//zakres jasności 
float range[] = { 0, 256 }; 
float* ranges[] = { range }; 

//wartość minimalna i maksymalna histogramu
float min_val = 0, max_val = 0;

//konwersja wejsciowego obrazu kolorowego do 8 bitowego w skali szarości 
gray = cvCreateImage( cvGetSize(image), 8, 1 ); 
cvCvtColor( image, gray, CV_BGR2GRAY ); 
//IplImage * out = cvCreateImage (cvGetSize (gray), IPL_DEPTH_8U, 1);

//Tworzenie okien do pokazania rezultatu 
cvNamedWindow("original",1); 

// cvNamedWindow("gray",1);
cvNamedWindow("histogram",1);

//obrazy z których zostanie obliczony histogram 
IplImage* images[] = { gray }; 

// przygotowanie pustego histogramu 
hist = cvCreateHist( 1, size, CV_HIST_ARRAY, ranges,1); 

// obliczenie histogramu z obrazów
cvCalcHist( images, hist, 0, NULL);
// znalezienie minimalnej i maksymalnej wartości histo
cvGetMinMaxHistValue( hist, &min_val, &max_val);

// tworzenie 8bitowego obrazu do pokazania histogramu 
imgHistogram = cvCreateImage(cvSize(256, 50),8,1); 

// wypełnienie go białym kolorem
cvRectangle(imgHistogram, cvPoint(0,0), cvPoint(256,50),
CV_RGB(255,255,255),CV_FILLED);

//rysowanie histogramu jasności pikseli znormalizowanego od 0 do 50 
for(int i=0; i < 256; i++){ 
        val = cvQueryHistValue_1D( hist, i); 
        norm = cvRound(val*50/max_val); 
        cvLine(imgHistogram,cvPoint(i,50), cvPoint(i,50-norm),CV_RGB(0,0,0)); 
       
}  

    //pokazanie okien z rezultatem 

cvShowImage( "original", image );
cvShowImage( "histogram", imgHistogram );

cvWaitKey(); 
cvReleaseImage( &gray); 
cvReleaseImage( &imgHistogram); 
                    }

// Niszczy okno
cvResetImageROI(image);
cvDestroyAllWindows();
return 0;
}