Login  Register

Re: Convolution kernels

Posted by Knecht, David on Feb 27, 2009; 1:58am
URL: http://imagej.273.s1.nabble.com/Convolution-kernels-tp3693561p3693565.html

That explains it.  It should have been pretty obvious since it says  
radius, but I was thinking that entering 2 was 2x2 since I had been  
reading about 2x2 kernels. Thanks- Dave

On Feb 26, 2009, at 6:30 PM, Jerome Mutterer wrote:

> David,
>
> As Bob pointed out, the parameter value that you enter in the dialog  
> of the
> "Mean..." filter is the radius of the filter, not the diameter. The  
> mean
> filter uses circular kernels instead of square kernels. From the  
> RankFilters
> source code:
> "Radius = 0.5 includes the 4 neighbors of the pixel in the center, "
> 010
> 111
> 010
>
> "radius = 1 corresponds to a 3x3 kernel size."
> 111
> 111
> 111
>
> For radius 2, the kernel used look like :
> 01110
> 11111
> 11111
> 11111
> 01110
>
> etc.
>
> Sincerely,
> Jerome.
>
>
>>
>> On Thu, Feb 26, 2009 at 8:33 PM, David Knecht  
>> <[hidden email]>wrote:
>>
>>> Hi BOb- To test, I took a 20x20 black image and put a single 255  
>>> white
>>> pixel in the middle.  Then I ran a 2x2 mean filter.  I would have  
>>> predicted
>>> that only the pixels surrounding the white pixel would be affected  
>>> since all
>>> the others are more than 2 pixels away.  I got a pattern of values  
>>> of 12 up
>>> to that is 5 pixels high and wide.   Dave
>>>
>>>
>>> On Feb 26, 2009, at 12:13 PM, Robert Dougherty wrote:
>>>
>>> Prof. Knecht,
>>>>
>>>> Looking under the hood, the convolution code starts by making a  
>>>> copy of
>>>> the image.  It then replaces each pixel of the original image by a
>>>> computation made from the copy.  This is how it should be.  I  
>>>> wonder about
>>>> your test methodology.  As for the edges, I had assumed zero-
>>>> padding, but it
>>>> is actually more interesting.  The input image is effectively  
>>>> extended by
>>>> duplicating the edge pixels outward, perpendicular to the image.  
>>>> The corner
>>>> areas are effectively filled with the value of the corner pixel.  
>>>> Here is
>>>> the code to get a pixel from location (x,y) to use in the  
>>>> convolution.  If x
>>>> is outside the image, then x is replaced with the closest x that  
>>>> is part of
>>>> the image, and similarly for y.
>>>>
>>>>  private float getPixel(int x, int y, float[] pixels, int width,  
>>>> int
>>>> height) {
>>>>      if (x<=0) x = 0;
>>>>      if (x>=width) x = width-1;
>>>>      if (y<=0) y = 0;
>>>>      if (y>=height) y = height-1;
>>>>      return pixels[x+y*width];
>>>>  }
>>>>
>>>> Bob
>>>>
>>>> On Feb 26, 2009, at 8:01 AM, David Knecht wrote:
>>>>
>>>> I am trying to understand how a convolution like a 2x2 mean filter
>>>>> actually works.  I presume it always starts in the upper left of  
>>>>> the image.
>>>>> It would then calculate the average of those first 4 pixels.  I  
>>>>> thought
>>>>> that the sliding window of the convolution resets as it moves so  
>>>>> that you
>>>>> are always calculating from the original values of the image  
>>>>> matrix as
>>>>> opposed to using the new calculated value from applying the  
>>>>> convolution.  I
>>>>> ran a test to confirm, and to my surprise it appears that the  
>>>>> convolution is
>>>>> applied continuously. Is that right?  Is this described  
>>>>> somewhere in the
>>>>> documentation?  I would imagine that you could filter either way  
>>>>> and it is
>>>>> just how the algorithm is implemented.  Also, is it described  
>>>>> somewhere how
>>>>> imageJ handle the edges?  Dave
>>>>>
>>>>> Dr. David Knecht
>>>>> Department of Molecular and Cell Biology
>>>>> Co-head Flow Cytometry and Confocal Microscopy Facility
>>>>> U-3125
>>>>> 91 N. Eagleville Rd.
>>>>> University of Connecticut
>>>>> Storrs, CT 06269
>>>>> 860-486-2200
>>>>> 860-486-4331 (fax)
>>>>>
>>>>
>>>> Robert Dougherty, Ph.D.
>>>> President, OptiNav, Inc.
>>>> 4176 148th Ave. NE
>>>> Redmond, WA 98052
>>>> (425)891-4883
>>>> FAX (425)467-1119
>>>> www.optinav.com
>>>> [hidden email]
>>>>
>>>
>>> Dr. David Knecht
>>> Department of Molecular and Cell Biology
>>> Co-head Flow Cytometry and Confocal Microscopy Facility
>>> U-3125
>>> 91 N. Eagleville Rd.
>>> University of Connecticut
>>> Storrs, CT 06269
>>> 860-486-2200
>>> 860-486-4331 (fax)
>>>
>>
>>

Dr. David Knecht
Department of Molecular and Cell Biology
Co-head Flow Cytometry and Confocal Microscopy Facility
U-3125
91 N. Eagleville Rd.
University of Connecticut
Storrs, CT 06269
860-486-2200
860-486-4331 (fax)