Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image 旋转积分图像之和(RSAT)不返回原始像素值之和_Image_Matlab_Integral - Fatal编程技术网

Image 旋转积分图像之和(RSAT)不返回原始像素值之和

Image 旋转积分图像之和(RSAT)不返回原始像素值之和,image,matlab,integral,Image,Matlab,Integral,我有一个图像,如矩阵A A=[156 159 155 156 159 158 160 154 157 158 159 158 160 156 159 158 155 158 156 159 157 158 160 154 157159158160 156153155159159155156155157 155157 156 159 152156 158 156 153 157 156153 155 154155 157 156 159 156159157 161 162 157 158 155

我有一个图像,如矩阵A

A=[156 159 155 156 159 158

160 154 157 158 159 158 160

156 159 158 155 158 156 159 157 158

160 154 157159158160

156153155159159155156155157

155157 156 159 152156 158

156 153 157 156153 155 154155 157 156

159 156159157 161 162 157

158 155 154 156 160 162 155 159 161

155 154 157 158 160 160 159 160 158 161]

要获取RSAT(x,y)的像素值, RSAT(x,y)=RSAT(x-1,y-1)+RSAT(x-1,y+1)-RSAT(x-2,y)+I(x-1,y)+I(x,y);其中I是原始图像(矩阵)

矩阵B(计算RSAT后):

[0 0 0 0 0

0 156 159 155 158 156 159 157 158

156 475 627 629 629 626 632 631 632 631 475

475 943 1258 1413 141314181416 1422 1420 1265 949

943 1574 2042 23572515 2518 25232522 2371 2053 1583

1574235829803456377393639383786346830022370

23583291408047125193551455135192473040963317

32914391533161296760707970826763613353584410

43915646675276928329863786438334770767665671

56467069832192669881102051020899069283417084

7069 8634 9892 10825 11454 11768 11788 11478 10855 9918 8663]

矩阵A处区域(粗体区域)的总和=2041。 然而,矩阵B处的区域(粗体区域)之和=1880。作为积分镜像理论,它假设返回与矩阵a 2041相同的值

这里是我的代码(matlab)

请帮助我。 多谢各位

I= [156 159 158 155 158 156 159 158 157 158;
160 154 157 158 157 159 158 158 158 160;
156 159 158 155 158 156 159 158 157 158;
160 154 157 158 157 159 158 158 158 160;
156 153 155 159 159 155 156 155 155 157;
155 155 155 157 156 159 152 158 156 158;
156 153 157 156 153 155 154 155 157 156;
159 159 156 158 156 159 157 161 162 157;
158 155 158 154 156 160 162 155 159 161;
155 154 157 158 160 160 159 160 158 161];

Dummy_Ori_Img =padarray(I,[1 1],'pre') ;
Dummy_Ori_Img2 =padarray(Dummy_Ori_Img,[0 1],'replicate','post') ;

%calculate RSAT
RSAT = zeros(size(Dummy_Ori_Img2));
[Height_Dummy,Width_Dummy]=size (Dummy_Ori_Img2);
for x =1:Height_Dummy
for  y = 1:Width_Dummy
    if x-2<=0 || (x-2)>Height_Dummy || y>=Width_Dummy ||y==1
        RSAT1=0;
    else
        RSAT1= RSAT(x-2,y);
    end
    if x-1<=0 || y-1<=0 || (x-1)>Height_Dummy || (y-1)>Width_Dummy
        RSAT2=0;
    else
        RSAT2=RSAT(x-1,y-1);
    end
    if x-1<=0 ||  (x-1)>Height_Dummy || (y+1)>Width_Dummy 
        RSAT3=0;
    else
        RSAT3=RSAT(x-1,y+1);
    end 
    if x-1<=0 || y<=0 || x>Width_Dummy || y>Height_Dummy
        DOI1=0;
    else
        DOI1=Dummy_Ori_Img(x-1,y);
    end
    if x<=0 || y<=0 || x>Width_Dummy || y>Height_Dummy
        DOI2=0;
    else
        DOI2=Dummy_Ori_Img(x,y);
    end
    RSAT(x,y)= RSAT3 + RSAT2-RSAT1 + DOI2 + DOI1;
end
end
RSATnew  = RSAT (1:size(Dummy_Ori_Img,1),1: size(Dummy_Ori_Img,2)  );
outer_upright_kernel = ones (3,3);
TiltedKernel=ceil(imrotate(outer_upright_kernel,45,'bilinear','loose'));
[Height_tilt,Width_tilt]=size (TiltedKernel);
HalfTilt_x= floor(Width_tilt/2);
HalfTilt_y= floor(Height_tilt/2);
% calculate sum of region
xi=6;
yi=6;
fourpoints = [xi yi HalfTilt_x HalfTilt_y];
row_val=fourpoints(1,1);
col_val=fourpoints(1,2);
img_width=fourpoints(1,3);
img_length=fourpoints(1,4);
if row_val-1<=0 ||col_val-img_width<=0
    T1to = 0;
else
    T1to = RSATnew(row_val-1,col_val-img_width);
    TiltOuter1 = [row_val-1,col_val-img_width];
end
if row_val-1-img_length<=0 || col_val-1<=0
    T2to =  0;
else
    T2to = RSATnew(row_val-1-img_length,col_val);
    TiltOuter2 = [row_val-1-img_length,col_val];
end
if row_val + img_length<=0 ||col_val<=1
    T3to = 0;
else
    T3to = RSATnew(row_val + img_length,col_val);
    TiltOuter3 = [row_val + img_length,col_val];
end
if col_val+img_width+1 <=0
    T4to = 0;
else
    T4to = RSATnew(row_val,col_val+img_width+1);
    TiltOuter4 = [row_val,col_val+img_width+1];
end
TiltOuterSum = T2to + T3to - T1to - T4to;
I=[156 159 155 158;
160 154 157 158 157 159 158 158 158 160;
156 159 158 155 158 156 159 158 157 158;
160 154 157 158 157 159 158 158 158 160;
156 153 155 159 159 155 156 155 155 157;
155 155 155 157 156 159 152 158 156 158;
156 153 157 156 153 155 154 155 157 156;
159 159 156 158 156 159 157 161 162 157;
158 155 158 154 156 160 162 155 159 161;
155 154 157 158 160 160 159 160 158 161];
Dummy_Ori_Img=padarray(I,[11],'pre');
Dummy_Ori_Img2=padarray(Dummy_Ori_Img,[01],'replicate','post');
%计算RSAT
RSAT=零(大小(虚拟或Img2));
[高度\假人,宽度\假人]=尺寸(假人或Img2);
对于x=1:高度\u假人
对于y=1:宽度\u假人
如果x-2高度| | y>=宽度| | y==1
RSAT1=0;
其他的
RSAT1=RSAT(x-2,y);
终止
如果x-1宽度\u虚拟
RSAT2=0;
其他的
RSAT2=RSAT(x-1,y-1);
终止
如果x-1高度| | |(y+1)>宽度|假人
RSAT3=0;
其他的
RSAT3=RSAT(x-1,y+1);
终止
如果x-1高度\ U假人
DOI1=0;
其他的
DOI1=虚拟的或Img(x-1,y);
终止
如果xhu虚拟
DOI2=0;
其他的
DOI2=虚拟或Img(x,y);
终止
RSAT(x,y)=RSAT3+RSAT2-RSAT1+DOI2+DOI1;
终止
终止
RSATnew=RSAT(1:大小(虚拟图像,1),1:大小(虚拟图像,2));
外核=一(3,3);
倾斜内核=ceil(imrotate(外部内核,45,'双线性','LOSE');
[高度倾斜,宽度倾斜]=大小(倾斜内核);
半倾斜x=地板(宽度倾斜/2);
半倾斜y=地板(高度倾斜/2);
%计算区域之和
xi=6;
yi=6;
四点=[xi yi halfttilt_x halfttilt_y];
行值=四个点(1,1);
col_val=四个点(1,2);
img_宽度=四个点(1,3);
img_长度=四个点(1,4);
如果基于Lienhart(2002)()的第1行

RSAT(x,y)=RSAT(x-1,y-1)+RSAT(x+1,y-1)-RSAT(x,y-2)+I(x,y)+I(x,y-1)

对于你的矩阵,一个

[156 159 155 156 159 157 158

160 154 157 158 159 158 160

156159155158156159158158

160154157158157159158158160

156153155159159155155155157

155157 156 159 152156 158

156 153 157 156153 155 154155 157 156

159 156159157 161 162 157

158 155 154 156 160 162 155 159 161

155 154 157 158 160 160 159 160 158 161]

那么,矩阵A的RSAT应为:

[156 159 155 156 159 157 158

475627629626#632#631 632 631 475

787 1258 1413 1413 141814161422 1420 1265 791

1099 1886 2357 25152518 2523 25222371 1895 1108

1415 2505#33003779 3936 3938 3786 3310
2527
1421

1717 3137 42375037 5514 5513 5034 42553147 1734

2033 3757 5186 62856923 6924 62885184 3775 2040

2355 4394 6118 7386 8004#8012#7385 6124 4396 2354

2678 5030 6908 8149 8787 8784 8167 6913 5024 2674

2988 5501 7376 8621 9245 9262 8633 7382 5508 2992]


区域总数(矩阵A中的粗体区域-我已根据论文修改)为2817。基于RSAT,应计算为
8012+632-3300-2527=2817

显示您的代码或计算NIO,我添加了我的代码和更改示例。谢谢。代码块本身通常不是有用的答案