如何把这个程序的复杂度降低


我的解答思路和尝试过的方法
I = imread('E:\学习文档\image\1.bmp');
[m,n] = size(origin_I);
PE_I = origin_I;
for i = 2: m - 1 %不是边界像素值
for j = 2: n - 1
a = origin_I(i-1,j-1);
b = origin_I(i-1,j);
c = origin_I(i-1,j+1);
d = origin_I(i,j-1);
e = origin_I(i,j+1);
f = origin_I(i+1,j-1);
g = origin_I(i+1,j);
h = origin_I(i+1,j+1);
x1 = sum(a+b+c+d+e+f+g+h)/8;%把邻域 8 个像素的均值作为初始值
x = [a,b,c,d,e,f,g,h];
for e = 1: 8 %计算各个方向的梯度
k(e) = x(e) - x1;
end
for t = 1: 8 %计算各方向梯度模的大小
p(t) = abs( k(t)) ;
end
p = sort(p);
k = sort(k);
for f3 = 1: 8 %计算各方向的权值
w(f3) = mse(f3) /sum(mse(f3)) ;
end
w = sort(w,1,'descend');%各个方向的权值进行降序排列
for i = 1: 8 %根据权值求出预测误差
m(i,j) = sum(w(i) * ((k(i) +x1)));
PE_I(i,j) = origin_I(i,j) - m(i,j);
end
end
end
我想要达到的结果
我复现一下复杂度还是很高,有没有更好的方法