How to Show modified image in MATLAB.

3 views (last 30 days)
Hi,
I am looking for a method which help me to showing modified patches of image in matlab into the original image. I select random patches from an image half of patches i brighten and half of patches i darken and when i write "imshow(A)" it show me the original image not the modified one. I have required a method which show me the modified patches pasted into their original image.
Here is my Coding!
clc;
A=imread('C:\Users\hp\Desktop\matlab\pictures\lenna.png');%sample image
rnd_x = randperm(size(A,1)-128,7);%choose 7 random unique points on x-axis
rnd_y = randperm(size(A,2)-128,7);%choose 7 random unique points on y-axis
image(A)
for ii = 1:4
for jj = 5:7
piece{jj} = A((rnd_x(jj):(rnd_x(jj)+127)),(rnd_y(jj):(rnd_y(jj)+127)),1:3)+100;
figure(jj)
a=imadjust(jj);
imshow(piece{jj});
end
piece{ii} = A((rnd_x(ii):(rnd_x(ii)+127)),(rnd_y(ii):(rnd_y(ii)+127)),1:3)-100;%Convert chosen numbers to image pieces
figure(ii)
b=imadjust(ii);
imshow(piece{ii});
end
imshow(A)

Accepted Answer

Chetan Gupta
Chetan Gupta on 16 Jul 2021
Edited: Chetan Gupta on 16 Jul 2021
Hi John,
I understand that you want to take 7 patches of size 127X127 from the original image and make 3 of them lighter by adding 100 to there pixel values and 4 of them darker by subtracting 100 from there pixel values. You are not able to see any change in the image ‘A’ as you didn’t make any changes on it, rather stored the changed pixel values in ‘piece’. You can try this modified code.
clc;
A=imread('C:\Users\hp\Desktop\matlab\pictures\lenna.png');%sample image
rnd_x = randperm(size(A,1)-128,7);%choose 7 random unique points on x-axis
rnd_y = randperm(size(A,2)-128,7);%choose 7 random unique points on y-axis
image(A)
for ii = 1:4
for jj = 5:7
piece{jj} = A((rnd_x(jj):(rnd_x(jj)+127)),(rnd_y(jj):(rnd_y(jj)+127)),1:3)+100;
A((rnd_x(jj):(rnd_x(jj)+127)),(rnd_y(jj):(rnd_y(jj)+127)),1:3)= piece{jj}; % add the changed pixel values to the original image A
figure(jj)
a=imadjust(jj);
imshow(piece{jj});
end
piece{ii} = A((rnd_x(ii):(rnd_x(ii)+127)),(rnd_y(ii):(rnd_y(ii)+127)),1:3)-100;%Convert chosen numbers to image pieces
A((rnd_x(ii):(rnd_x(ii)+127)),(rnd_y(ii):(rnd_y(ii)+127)),1:3)= piece{ii}; % add the changed pixel values to the original image A
figure(ii)
b=imadjust(ii);
imshow(piece{ii});
end
imshow(A)
Still, this might not be the best way to darken or lighter an image. AS by adding 100 or subtracting 100 you might land on pixel values greater than 255 or less than 0 respectively. Thus, making those portions completely white or black.
You can refer to this answer How do I reduce image brightness and increase image contrast? - MATLAB Answers - MATLAB Central (mathworks.com) to know more about changing brightness of images.
Thanks
  1 Comment
John schwan
John schwan on 24 Jul 2021
Chetan Gupta
Thank you so much! It's working. Thank's alot again :-)

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!