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

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

 Akzeptierte Antwort

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 Kommentare

Alright. Thanks for your answer.
All I want is:
Suppose I = x(1,2) = 250 (intensity of the pixel).
I want to compute x(1,2)=xL(250) + ( L(250)*lambda(1,2) );
So how can I compute the x(i,j) if the pixel value can't be an index :(
KSSV
KSSV am 22 Mär. 2019
Bearbeitet: KSSV am 22 Mär. 2019
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.
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.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Community Treasure Hunt

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

Start Hunting!

Translated by