Re: Speed Improvement [message #74619 is a reply to message #74582] |
Wed, 26 January 2011 19:56  |
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.
|
|
|