Array indices must be positive integers or logical values (image processing)

1 次查看(过去 30 天)
x = imread('cameraman.jpg');
[M,N]=size(x)
for i=1:M
for j=1:N
I=x(i,j);
x(i,j)=xL(I)+( L(I)*lambda(i,j) );
end
end
where
xL is 1x256 dimension, xL is 1x256 dimension, and lambda is 256x256 dimension which is same with x that has 256x256 dimension.
I get this error:
Array indices must be positive integers or logical values.
Error in edge_enhancing (line 134)
x(i,j)=xL(I)+( L(I)*lambda(i,j) );
Ple

采纳的回答

KSSV
KSSV 2019-3-22
I=x(i,j); % here I will be pixel value of image, it cannot be a index
x(i,j)=xL(I)+( L(I)*lambda(i,j) );
Note that in MATLAB indices should be positive integers or logicals.
A = rand(10) ;
A(1) % no error
A(10) % no error
A(5,4) % no error
A(-1) % error
A(0) % error
A(23.5) % error
  3 个评论
KSSV
KSSV 2019-3-22
编辑:KSSV 2019-3-22
Try using double/logical. If the vlaue is 250, it should work. Read about double. But I am surprised..why you want to index with a pixel value.
Yohanes Setiawan
Yohanes Setiawan 2019-3-22
using double will output the same thing. I want to index with a pixel value because I want to multiply lambda with the L in k-intensity.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by