How to replace certain gray level values in image to find information loss in both?

2 views (last 30 days)
I'm finding information loss in Img1 and its replica Img2 when only a certain gray level values are allowed.
Entropy_Info_Loss=Entropy(Img1)-Entropy(img2);
where img2 must not have gray values other than eg.
only_include=[20, 30, 50].
img2(img1(:)~=only_include)=0;
However my result is all zeros image of img2. Can anyone assist me..

Accepted Answer

Walter Roberson
Walter Roberson on 2 Apr 2016
mask = ismember(img1, only_include);
img2 = img1;
img2(~mask) = 0;
  5 Comments
Walter Roberson
Walter Roberson on 3 Apr 2016
That could happen if none of the values exactly match the list in only_include. For example if you had converted im2double() then the array values would be in the range 0 to 1.
But if you prefer a different implementation method:
img2 = zeros(size(img1), class(img1)) ;
for K = 1 : length(only_include)
mask = img1 == only_include(K) ;
img2(mask) = img(mask) ;
end
h612
h612 on 4 Apr 2016
Well this did work. Thank you. I tried using the class type only at first..but it didn't work. Using for loop did. Wondering what is wrong in the previously suggested method.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!