변환

2014-05-13 3 views
-6

나는 화상 X 512 * 512 사이즈를 갖고있는 MATLAB 코드가 있었다 M = 512, N = 512의 다음 단계는 I이 변환 할 이제이변환

r=x(:, 2:N) - x(:, 1:(N-1)); 
d= mean2(abs(r(:, 8:8:8*(floor(N/8)-1)))); 
a= (8*mean2(abs(r)) - d)/7; 

인 opencv 코드에 단계가있어서 논리가 붙어 있습니다.

cv::Mat scrImage =imread(argv[1],CV_LOAD_IMAGE_ANYCOLOR); // Read the file 
cv::Mat dst(scrImage.size(),CV_64FC3);//Image double 
int nrows = dst.rows; 
int ncols = dst.cols*dst.channels(); 
for(int j=0;j<nrows;j++){ 
for(int i=0;i<ncols;i++) 
{ 
}} 

이것에 대한 아이디어가 있습니까? 미리 감사드립니다.

+1

[tag : matlab] 및 [tag : opencv] 전문가가 여기까지 미안하지만 귀하의 궁금증은 완전히 불분명합니다. –

+0

죄송합니다. 명확한 설명과 함께 질문을 편집했습니다. 도와 주시겠습니까? – raj

+0

도움이되지 않는 이유는 무엇입니까? 아니면 그랬어? 이 질문을 재개하기에 조금 늦었습니다. 다른 사람에게 물어볼 수도 있지만,이 질문에 충분히 다를 수 있도록주의하십시오. 그렇지 않으면 쉽게 중복으로 닫을 수 있습니다. –

답변

4

다양한 방법이 있습니다. 가장 깨끗한 방법은 ROI (Region of Interest)를 설정 한 다음 매트릭스 작업을 적용하는 것입니다. 이 작업 이전에 R 및 컴퓨팅 numRows의, NUMCOLS을 만들고 MaskImage을 할당 가정

subtract(x(Rect(1,0,NumCols-1,NumRows)),x(Rect(0,0,NumCols-1,NumRows),R) 
singleLineMask = Mat(1,NumCols,CV_8U) 
for (int i=1;i<NumCols;i++) 
    singleLineMask.at<int>(1,i)=1; 
repeat(singleLineMask,NumRows,1,MaskImage) 
d=mean(R,MaskImage) 
a=(8*mean(abs(R))-d)/7 

:처럼 뭔가.

+0

Rect의 생성자가 'Rect _ (_ Tp _x, _Tp _y, _Tp _width, _Tp _height)'이고 OpenCV가 Matlab의 1 기반이 아닌 0 기반 인덱싱을 사용하면'subtract (x (Rect (1 , 0, NumCols-1, NumRows)), x (Rect (0,0, NumCols-1, NumRows), R)'? – Bull

+0

네 말이 맞아, 나는 대답을 편집했다 –

+0

죄송합니다. 지금 내 도움을 줄 수 있습니까? – raj