Link Copied
Hello androoy,
I guess, the problem is in the original image ptr and image show.
Do you have chance to show the imagein imgCache?
I upload one small sample (cpp code)to show the image, you may try it.
Regards,
Ying
//ippiCanny.cpp
#include
#include
#include
#include "ipp.h"
extern void* ipView_8u_C1R(const Ipp8u* pData, int step, IppiSize roi,
const char* caption, int isModalView); //from ippview.cpp
int main()
{
int width=1024;
int height=1392;
IppiSize roi = {1024, 1392};
int size, size1;
int imgStep16, imgStep8;
Ipp16s *dx = ippiMalloc_16s_C1(1024, 1392, &imgStep16);
Ipp16s *dy = ippiMalloc_16s_C1(1024, 1392, &imgStep16);
Ipp8u *imgCache = ippiMalloc_8u_C1(1024, 1392,&imgStep8);
Ipp8u *edges = ippiMalloc_8u_C1(1024, 1392, &imgStep8);
//ippiImageJaehne_8u_C1R(imgCache, imgStep8, roi);
IppiSize sqrSize={400, 400};
ippiSet_8u_C1R(255, imgCache+800*imgStep8+200, imgStep8, sqrSize);
/*for(int i=0; i < (width*height); i++) {
imgCache = (i/16);
}*/
ipView_8u_C1R( imgCache, imgStep8, roi, "imgCache", 0 );
ippiFilterSobelVertGetBufferSize_8u16s_C1R(roi, ippMskSize3x3, &size);
ippiFilterSobelHorizGetBufferSize_8u16s_C1R(roi, ippMskSize3x3, &size1);
if(size
if(size
ippiFilterSobelVertBorder_8u16s_C1R(imgCache, 1024*sizeof(Ipp8u), dx, 1024*sizeof(Ipp16s), roi, ippMskSize3x3, ippBorderRepl, 0, buffer);
ippiFilterSobelHorizBorder_8u16s_C1R(imgCache, 1024*sizeof(Ipp8u), dy, 1024*sizeof(Ipp16s), roi, ippMskSize3x3, ippBorderRepl, 0, buffer);
ippiCanny_16s8u_C1R(dx, 1024*sizeof(Ipp16s), dy, 1024*sizeof(Ipp16s), edges, 1024*sizeof(Ipp8u), roi, 100, 1000, buffer);
ipView_8u_C1R( edges, imgStep8, roi, "edges", 1 );
return 0;
}
Ipp8u * doCanny(Ipp16u* ptr) {int width=1024;int height=1392;IppiSize roi = {1024, 1392};int size, size1;Ipp16s *dx = ippiMalloc_16s_C1(1024, 1392, &imgStep16);Ipp16s *dy = ippiMalloc_16s_C1(1024, 1392, &imgStep16);Ipp8u *imgCache = ippiMalloc_8u_C1(1024, 1392,&imgStep8);Ipp8u *edges = ippiMalloc_8u_C1(1024, 1392, &imgStep8);for(int i=0; i < (width*height); i++) {imgCache = (ptr/16);}ippiFilterSobelVertGetBufferSize_8u16s_C1R(roi, ippMskSize3x3, &size);ippiFilterSobelHorizGetBufferSize_8u16s_C1R(roi, ippMskSize3x3, &size1);if(size ippiCannyGetSize(roi, &size1);if(size Ipp8u * buffer = ippsMalloc_8u(size);ippiFilterSobelVertBorder_8u16s_C1R(imgCache, 1024*sizeof(Ipp8u), dx, 1024*sizeof(Ipp16s), roi, ippMskSize3x3, ippBorderRepl, 0, buffer);ippiFilterSobelHorizBorder_8u16s_C1R(imgCache, 1024*sizeof(Ipp8u), dy, 1024*sizeof(Ipp16s), roi, ippMskSize3x3, ippBorderRepl, 0, buffer);ippiCanny_16s8u_C1R(dx, 1024*sizeof(Ipp16s), dy, 1024*sizeof(Ipp16s), edges, 1024*sizeof(Ipp8u), roi, 100, 1000, buffer);return edges;}Ipp8u * doCanny(Ipp16u* ptr) {
int width=1024; int height=1392; IppiSize roi = {1024, 1392};
int size, size1; Ipp16s *dx = ippiMalloc_16s_C1(1024, 1392, &imgStep16); Ipp16s *dy = ippiMalloc_16s_C1(1024, 1392, &imgStep16);
Ipp8u *imgCache = ippiMalloc_8u_C1(1024, 1392,&imgStep8); Ipp8u *edges = ippiMalloc_8u_C1(1024, 1392, &imgStep8);
for(int i=0; i < (width*height); i++) { imgCache = (ptr/16); }
ippiFilterSobelVertGetBufferSize_8u16s_C1R(roi, ippMskSize3x3, &size); ippiFilterSobelHorizGetBufferSize_8u16s_C1R(roi, ippMskSize3x3, &size1);
if(sizeIpp8u * buffer = ippsMalloc_8u(size);
ippiFilterSobelVertBorder_8u16s_C1R(imgCache, 1024*sizeof(Ipp8u), dx, 1024*sizeof(Ipp16s), roi, ippMskSize3x3, ippBorderRepl, 0, buffer);ippiFilterSobelHorizBorder_8u16s_C1R(imgCache, 1024*sizeof(Ipp8u), dy, 1024*sizeof(Ipp16s), roi, ippMskSize3x3, ippBorderRepl, 0, buffer);
ippiCanny_16s8u_C1R(dx, 1024*sizeof(Ipp16s), dy, 1024*sizeof(Ipp16s), edges, 1024*sizeof(Ipp8u), roi, 100, 1000, buffer);
return edges;}Source image (just a square):edges image:
Ipp16u * ptr;ptr = ippiMalloc_16u_C1(imgSize.width, imgSize.height, &imgStep16);FILE * fp=fopen("C://Users//Yuja//Documents//MATLAB//test.raw", "rb");fread(ptr, sizeof(short), 1024*1392, fp);
Ipp8u *edges1;//Ipp8u *edges2;edges1 = ippiMalloc_8u_C1(imgSize.width, imgSize.height, &imgStep8);edges2 = ippiMalloc_8u_C1(imgSize.width, imgSize.height, &imgStep8);edges1 = doCanny(ptr);//edges2 = doCanny(ptr2);ofstream myfile;myfile.open("C://Users//Yuja//Documents//MATLAB//edge1.raw", ios::out | ios::binary);for(int i=0; i< 1024*1392; i++) {myfile.write((char*)&edges1, sizeof(char));}myfile.close();
int size, size1;Ipp16s *dx = ippiMalloc_16s_C1(1024, 1392, &imgStep16);Ipp16s *dy = ippiMalloc_16s_C1(1024, 1392, &imgStep16);Ipp8u *imgCache = ippiMalloc_8u_C1(1024, 1392,&imgStep8);Ipp8u *edges = ippiMalloc_8u_C1(1024, 1392, &imgStep8);
Hello androoy,
I guess, the problem is in the original image ptr and image show.
Do you have chance to show the imagein imgCache?
I upload one small sample (cpp code)to show the image, you may try it.
Regards,
Ying
//ippiCanny.cpp
#include
#include
#include
#include "ipp.h"
extern void* ipView_8u_C1R(const Ipp8u* pData, int step, IppiSize roi,
const char* caption, int isModalView); //from ippview.cpp
int main()
{
int width=1024;
int height=1392;
IppiSize roi = {1024, 1392};
int size, size1;
int imgStep16, imgStep8;
Ipp16s *dx = ippiMalloc_16s_C1(1024, 1392, &imgStep16);
Ipp16s *dy = ippiMalloc_16s_C1(1024, 1392, &imgStep16);
Ipp8u *imgCache = ippiMalloc_8u_C1(1024, 1392,&imgStep8);
Ipp8u *edges = ippiMalloc_8u_C1(1024, 1392, &imgStep8);
//ippiImageJaehne_8u_C1R(imgCache, imgStep8, roi);
IppiSize sqrSize={400, 400};
ippiSet_8u_C1R(255, imgCache+800*imgStep8+200, imgStep8, sqrSize);
/*for(int i=0; i < (width*height); i++) {
imgCache = (i/16);
}*/
ipView_8u_C1R( imgCache, imgStep8, roi, "imgCache", 0 );
ippiFilterSobelVertGetBufferSize_8u16s_C1R(roi, ippMskSize3x3, &size);
ippiFilterSobelHorizGetBufferSize_8u16s_C1R(roi, ippMskSize3x3, &size1);
if(size
if(size
ippiFilterSobelVertBorder_8u16s_C1R(imgCache, 1024*sizeof(Ipp8u), dx, 1024*sizeof(Ipp16s), roi, ippMskSize3x3, ippBorderRepl, 0, buffer);
ippiFilterSobelHorizBorder_8u16s_C1R(imgCache, 1024*sizeof(Ipp8u), dy, 1024*sizeof(Ipp16s), roi, ippMskSize3x3, ippBorderRepl, 0, buffer);
ippiCanny_16s8u_C1R(dx, 1024*sizeof(Ipp16s), dy, 1024*sizeof(Ipp16s), edges, 1024*sizeof(Ipp8u), roi, 100, 1000, buffer);
ipView_8u_C1R( edges, imgStep8, roi, "edges", 1 );
return 0;
}
For more complete information about compiler optimizations, see our Optimization Notice.