Hi all,
I was confuse how to edit subimage (small image) inside the big image.
i have 3 image.
big.png
start.png
stop.png
i'm using compare -metric rmse -subimage-search big.png start.png
but still dont know how then ..
my objective need change color start to red and stop to green in the big image.
Please help and thanks.
Modify subimage with reference image
- fmw42
- Posts: 25562
- Joined: 2007-07-02T17:14:51-07:00
- Authentication code: 1152
- Location: Sunnyvale, California, USA
Re: Modify subimage with reference image
You can locate the top left coordinate of a small image in a large image using compare as follows.
compare -metric rmse -subimage-search largeimage smallimage similarityimages
where similarityimages will be either two image -0,-1 or two frames of an image depending upon the format suffix you use.
-subimage-search must now (added at IM v6.6.3-6) be added to allow compare to know the two images are no the same size.
The second of the two output images will be the match score image showing you as the very brightest points where it matches best. You can extract all the matches (not just the best one that is reported to the terminal) using my script maxima at the link below
see
http://www.imagemagick.org/script/compare.php
http://www.imagemagick.org/Usage/compare/
http://www.imagemagick.org/script/comma ... age-search
viewtopic.php?f=1&t=14613&p=51076&hilit ... ric#p51076
You will have to run compare twice, once for the start image and once for the stop image and located with start and stop points you want to use via my script maxima
compare -metric rmse -subimage-search largeimage smallimage similarityimages
where similarityimages will be either two image -0,-1 or two frames of an image depending upon the format suffix you use.
-subimage-search must now (added at IM v6.6.3-6) be added to allow compare to know the two images are no the same size.
The second of the two output images will be the match score image showing you as the very brightest points where it matches best. You can extract all the matches (not just the best one that is reported to the terminal) using my script maxima at the link below
see
http://www.imagemagick.org/script/compare.php
http://www.imagemagick.org/Usage/compare/
http://www.imagemagick.org/script/comma ... age-search
viewtopic.php?f=1&t=14613&p=51076&hilit ... ric#p51076
You will have to run compare twice, once for the start image and once for the stop image and located with start and stop points you want to use via my script maxima
-
- Posts: 5
- Joined: 2012-10-08T03:00:43-07:00
- Authentication code: 67789
- Location: $indonesia =~ /Bali Island is in Indonesia Country :) /gi;
- Contact:
Re: Modify subimage with reference image
Hi Fred/fmw42,
Thanks and apreciate for for answer and help. i have download your maxima script
Let say we work just for search start.png in big.png and replace color to red of start.png ( i dont know it 'll using change color of start.png using imagemagick function or embed/drop another image similart start.png with different color, but i alreay make it start_red.png
Source png fle
-----------------
big.png
start.png
start_red.png
Expected Result ( i modify manual using photoshop )
-------------------
bigstart_result.png
Step
----------------
1. compare -metric rmse -subimage-search big.png start.png bigstart.png
Result :
bigstart-0.png
bigstart-1.png
2. maxima -r 5 -n 10 -t 50 -d 15 bigstart-1.png
Result :
111,3 gray=64372,250,98.2254%
303,46 gray=59840,233,91.31%
143,86 gray=45002,175,68.6687%
3. How then? to process 3 of result of coordinate and make them as my result like :
bigstart_result.png
Thanks for your help, hope it'll usefull for other people also. Thanks Fred, i'm new comer to this forum
Thanks and apreciate for for answer and help. i have download your maxima script
Let say we work just for search start.png in big.png and replace color to red of start.png ( i dont know it 'll using change color of start.png using imagemagick function or embed/drop another image similart start.png with different color, but i alreay make it start_red.png
Source png fle
-----------------
big.png
start.png
start_red.png
Expected Result ( i modify manual using photoshop )
-------------------
bigstart_result.png
Step
----------------
1. compare -metric rmse -subimage-search big.png start.png bigstart.png
Result :
bigstart-0.png
bigstart-1.png
2. maxima -r 5 -n 10 -t 50 -d 15 bigstart-1.png
Result :
111,3 gray=64372,250,98.2254%
303,46 gray=59840,233,91.31%
143,86 gray=45002,175,68.6687%
3. How then? to process 3 of result of coordinate and make them as my result like :
bigstart_result.png
Thanks for your help, hope it'll usefull for other people also. Thanks Fred, i'm new comer to this forum
Last edited by vaix on 2012-10-08T23:23:59-07:00, edited 3 times in total.
- fmw42
- Posts: 25562
- Joined: 2007-07-02T17:14:51-07:00
- Authentication code: 1152
- Location: Sunnyvale, California, USA
Re: Modify subimage with reference image
It would be very helpful if you edited your post above so that the images show. Do not put HTML tags. Just type the link to your images and then highlight the link and click on the "Img" formatting button above.
My guess is that once you have the coordinates, you need to composite a new small image of the desired color at that location(s) in the large image. You may be able to take the black/white small image and recolor it as you are doing the compositing.
see
http://www.imagemagick.org/Usage/layers/#convert
http://www.imagemagick.org/Usage/color_basics/#replace
http://www.imagemagick.org/Usage/color_ ... vel-colors
My guess is that once you have the coordinates, you need to composite a new small image of the desired color at that location(s) in the large image. You may be able to take the black/white small image and recolor it as you are doing the compositing.
see
http://www.imagemagick.org/Usage/layers/#convert
http://www.imagemagick.org/Usage/color_basics/#replace
http://www.imagemagick.org/Usage/color_ ... vel-colors
-
- Posts: 5
- Joined: 2012-10-08T03:00:43-07:00
- Authentication code: 67789
- Location: $indonesia =~ /Bali Island is in Indonesia Country :) /gi;
- Contact:
Re: Modify subimage with reference image
Hi Fred,
Thanks for your help. Finally i got the clue using this step:
:: convert big.png start_red.png -geometry 11x13+111+3 -composite start_red.png -geometry 11x13+303+46 -composite start_red.png -geometry 11x13+143
+86 -composite bigstart_result.png
Result :
bigstart_result.png
is there any simplify convert command above? composite using same/1 reference image and 3 of geometry/coordinate.
and overall process i think i should make script .. and i'm familiar using perl script, i'll share later. or is there any simple command to run step from beginning until compose image?
Thanks ..
Thanks for your help. Finally i got the clue using this step:
:: convert big.png start_red.png -geometry 11x13+111+3 -composite start_red.png -geometry 11x13+303+46 -composite start_red.png -geometry 11x13+143
+86 -composite bigstart_result.png
Result :
bigstart_result.png
is there any simplify convert command above? composite using same/1 reference image and 3 of geometry/coordinate.
and overall process i think i should make script .. and i'm familiar using perl script, i'll share later. or is there any simple command to run step from beginning until compose image?
Thanks ..
-
- Posts: 5
- Joined: 2012-10-08T03:00:43-07:00
- Authentication code: 67789
- Location: $indonesia =~ /Bali Island is in Indonesia Country :) /gi;
- Contact:
Re: Modify subimage with reference image
i write script using perl script :
Code: Select all
###################################
# Created by : vaix #
# Created date : oct 09, 2012 #
# Usage : perl cari.pl #
###################################
$fbig = 'big';
$fsta = 'start';
$fsto = 'stop';
$fsta_red = 'start_red';
$fsto_green = 'stop_green';
$fext = '.png';
$small_res = '12x13';
$cmd1 = "compare -metric rmse -subimage-search $fbig$fext $fsta$fext $fbig$fsta$fext";
$cmd2 = "maxima -r 5 -n 10 -t 40 -d 15 $fbig$fsta"."-1"."$fext";
$cmd3 = "compare -metric rmse -subimage-search $fbig$fext $fsto$fext $fbig$fsto$fext";
$cmd4 = "maxima -r 5 -n 10 -t 40 -d 15 $fbig$fsto"."-1"."$fext";
$ocmd1 = `$cmd1`;
$ocmd2 = `$cmd2`;
$out1 = getgeo($ocmd2,$small_res,"$fsta_red$fext");
$ocmd3 = `$cmd3`;
$ocmd4 = `$cmd4`;
$out2 = getgeo($ocmd4,$small_res,"$fsto_green$fext");
$fcmd = "convert $fbig$fext $out1 $out2 $fbig"."hasil"."$fext";
#print "$fcmd\n";
$oo = `$fcmd`;
sub getgeo {
my($out,$res,$fname) = @_;
$i=0;
@has='';
@data = split(/\n/,$out);
$cdata = @data;
for ($i=0; $i<$cdata; $i++){
$data[$i] =~ s/\s+//gi;
($met,$els) = split('gray',$data[$i]);
($x,$y) = split(',',$met);
push(@has,"$fname -geometry $res+$x+$y -composite ");
}
$has = "@has";
return $has;
}