Image 旋转积分图像之和(RSAT)不返回原始像素值之和
我有一个图像,如矩阵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) 请帮助我。 多谢各位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
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 331025271421
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,我添加了我的代码和更改示例。谢谢。代码块本身通常不是有用的答案