comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » Re: Search and Replace in 2D Array (Image)
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Return to the default flat view Create a new topic Submit Reply
Re: Search and Replace in 2D Array (Image) [message #66654 is a reply to message #66653] Thu, 28 May 2009 12:39 Go to previous messageGo to previous message
vikramivatury is currently offline  vikramivatury
Messages: 24
Registered: May 2009
Junior Member
On May 28, 3:28 pm, David Fanning <n...@dfanning.com> wrote:
> vikramivat...@gmail.com writes:
>> I have an image "m" which is [1229 x 1229] pixels that contains 1's
>> and 0's. I also have an image "img" which is [1229 x 1229] that
>> contains pixel IDs. For every 1 in image "m" it corresponds to a
>> certain pixel ID in image "img". I am trying to write a loop in IDL
>> that scans through the pixels of image "m" and when its get to a 1,
>> spit out its information from "img". I used the 'where' function (w =
>> where m gt 1.........ids = img(w)) and that worked fine in outputting
>> a 1D array of 1510441 pixels, but I am trying to do it for a 2D array
>> using loops.
>
>> img = read_tiff('NP.tif')
>> ids = fltarr(1229,1229)
>
>> for i = 0,1228 do begin
>>            for j = 0,1228 do begin
>>                    if (m(i,j) eq 1.) then begin
>>                            ids(i,j) = img(m(i,j))
>>                    endif
>>            endfor
>>    endfor
>
>> Any suggestions would be great.
>
> Well, don't do it like this. :-)
>
> I suggest you investigate LABEL_REGION. *Much* faster!
>
> Cheers,
>
> David
>
> --
> David Fanning, Ph.D.
> Coyote's Guide to IDL Programming (www.dfanning.com)
> Sepore ma de ni thui. ("Perhaps thou speakest truth.")

Ok, I will take a look at Label_Regions.

I was just thinking....Is it possible to do something like this
without an if-statment:

img = read_tiff('NP.tif')
ids = fltarr(1229,1229)
w = fltarr(1229,1229)

for i = 0,1228 do begin
for j = 0,1228 do begin
w(i,j) = where m eq 1
ids(i,j) = img(w(i,j))

endfor
endfor
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Previous Topic: Search and Replace in 2D Array (Image)
Next Topic: Am I having a blackout?

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Thu Oct 09 23:09:57 PDT 2025

Total time taken to generate the page: 1.11893 seconds