How to replace image portion with processed image?

I have one rgb image. I crop one portion by using imcrop function. After lots of processing I want to place that processed portion into the same place of the orginal image. How can I do that. I tried by using imfusion but its not worked.

 Réponse acceptée

Since you cropped it, you know what the starting and stopping rows and columns are. So just assign:
originalImage(row1:row2, col1:col2, :) = processedImage;

4 commentaires

Thank u. I crop the image using imrect. But how can I find the starting and stopping rows and columns are.
h = imrect;
position = getPosition(h);
handles.croppedImage = imcrop(handles.orginalImage, position);
position is [leftColumn, topRow, width, height] I believe - isn't it? So to get the other side you just simply add the width or height to the first side.
col1 = position(1);
col2 = col1 + position(3);
row1 = position(2);
row2 = row1 + position(4);
Yes. I got it. Thank you Sir.
Thank you Image Analyst

Connectez-vous pour commenter.

Plus de réponses (1)

Gosselin Thibault
Gosselin Thibault le 12 Juil 2018

0 votes

Hello everybody ! Sorry to view this long date post only but i've the same problem and your solution don't work on my program.
I have this error message : "Unable to perform assignment because the size of the left side is 118-by-325 and the size of the right side is 912-by-1200."
for this line code : Icrop1(row1:row2, col1:col2) = I;
Thank you for your help !!

4 commentaires

Without your program, all I can say is to make sure your (badly-named) I is 118-by-325. Use imresize() if you think that's appropriate.
I fixed my problem; i have just interchanged the originalImage and the processedImage. So yes it was very badly named !
But this solution did not resolve my problem because I also draw a curve on the modified image. I do not know how to draw the equivalent curve on the initial image.
Thank you for your repply and you help !
Duyen Ho
Duyen Ho le 24 Nov 2018
how did you fix the problem? im getting the same error
He said he had
processedImage(row1:row2, col1:col2, :) = originalImage;
when he should have had
originalImage(row1:row2, col1:col2, :) = processedImage;
like I said. When he "interchanged the originalImage and the processedImage" he got my code and it worked. In short, the bigger matrix is on the left, and the smaller submatrix is on the right.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Images dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by