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

Home » Public Forums » archive » Re: Speed Improvement
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: Speed Improvement [message #74619 is a reply to message #74582] Wed, 26 January 2011 19:56 Go to previous message
Rony K Varghese is currently offline  Rony K Varghese
Messages: 3
Registered: January 2011
Junior Member
On Jan 25, 10:03 pm, jeanh
<jghasb...@DELETETHIS.environmentalmodelers.ANDTHIS.com> wrote:
> Hi,
>
> first, you are not using sCount anywhere... remove this loop
>
> Instead of looping through all pixels, look for the needed ones
>
> pixelsToProcess = where(PixelArr eq E_F_ATTNMAP_HIGH_PIXEL,
> countPixToProcess)
>
> sXYcol = array_indices(pixelArr, pixelsToProcess) ;get the 2D coords
>
> for i=0L, countPixToProcess -1 do begin
>         ;process
> endfor
>
> Jean
>
> On 25/01/2011 4:24 AM, Rony K Varghese wrote:
>
>
>
>
>
>
>
>> ;Processing a picture
>> for sCount = 0, 9 do begin
>>          for sRow = UpperRow, LowerRow do begin
>>              for sCol = sLeftCol, sRightCol do begin
>>                  ; Check whether high pixels.
>>                  if E_F_ATTNMAP_HIGH_PIXEL eq PixelArr[sCol, sRow] then
>> begin
>>                      sXCol = sCol
>>                      sYRow = sRow
>>                  endif
>>                  ; from the center to the left
>>                  for sIndex = 0, sHalfWid do begin
>>                      if HIGH_PIXEL eq vTemp[sXCol - sIndex, sYRow] then
>> begin
>>                          PixelArr[sXCol - sIndex, sYRow] = HIGH_PIXEL
>>                      endif else begin
>>                          break ; break from for sIndex
>>                      endelse
>>                  endfor
>>                  ; from the center to the right
>>                  for sIndex = 0, sHalfWid do begin
>>                      if HIGH_PIXEL eq vTemp[sXCol + sIndex, sYRow] then
>> begin
>>                          PixelArr[sXCol + sIndex, sYRow] = HIGH_PIXEL
>>                      endif else begin
>>                          break ; break from for sIndex
>>                      endelse
>>                  endfor
>>                  ; from the center to  down
>>                  for sIndex = 0, sHalfHght do begin
>>                      if HIGH_PIXEL eq vTemp[sXCol, sYRow+ sIndex] then
>> begin
>>                          PixelArr[sXCol, sYRow+ sIndex] = HIGH_PIXEL
>>                      endif else begin
>>                          break ; break from for sIndex
>>                      endelse
>>                  endfor
>>                  ; from the center to up
>>                  for sIndex = 0, sHalfHght do begin
>>                      if HIGH_PIXEL eq vTemp[sXCol, sYRow - sIndex] then
>> begin
>>                          PixelArr[sXCol, sYRow - sIndex] = HIGH_PIXEL
>>                      endif else begin
>>                          break ; break from for sIndex
>>                      endelse
>>                  endfor
>>              endfor; end for sCol
>>          endfor; end for sRow
>>      endfor;end for sCount

Thank you all for the help to me......
This function is to scan and process each pixel of the 128*128 picture
as in the source code.
I cannot remove the for loop of scount, because that much times the
code needs to be executed.
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Previous Topic: Crashes in IDL 7.1 & 8.0, interactive + VM mode, linux and Mac OS X
Next Topic: Re: IDL books for beginners

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

Current Time: Wed Oct 08 13:36:26 PDT 2025

Total time taken to generate the page: 0.00449 seconds