Tôi làm việc trên một hàm trong Matlab tính toán DCT (biến đổi cosin rời rạc) của một hình ảnh. Tôi không biết những gì không làm việc trong mã của tôi, nhưng tôi có một hình ảnh đầu ra với cùng một số. Tôi muốn sử dụng công thức này cho DCT của tôi.Biến đổi cosin rời rạc (DCT) của hình ảnh
Bất kỳ ý tưởng nào vui lòng.
function image_comp = dctII(image, b)
[h w] = size(image);
image = double(image) - 128;
block = zeros(b,b);
image_t=zeros(size(image));
for k=1:b:h
for l=1:b:w
image_t(k:k+b-1,l:l+b-1)= image(k:k+b-1,l:l+b-1);
for u=1:b
for v=1:b
if u == 0
Cu = 1/sqrt(2);
else
Cu = 1;
end
if v == 0
Cv = 1/sqrt(2);
else
Cv = 1;
end
Res_sum=0;
for x=1:b;
for y=1:b
Res_sum = Res_sum + ((image_t(x,y))*cos(((2*x)+1)*u*pi/(2*b))*cos(((2*y)+1)*v*pi/(2*b)));
end
end
dct= (1/4)*Cu*Cv*Res_sum;
block(u,v) = dct;
end
end
image_comp(k:k+b-1,l:l+b-1)=block(u,v);
end
end
end
Bạn mã hoạt động với chỉnh sửa được đề cập bên dưới. Nhưng tôi khuyên bạn nên đọc các vòng lặp, nếu không bạn sẽ gặp khó khăn khi làm việc với rất nhiều dữ liệu. –