Re: [GRASS-user] Running canny edge detection on thinned binary image

2023-07-24 Thread Venka

Hi Vaclav,

Thanks for your response.

My purpose is to generate edge and angle map and use them as
input for r.houghtransform.

The workflow works well for detecting linear valley features
form DEM. I notice that r.houghtransform works better when we
use the angle map and set the appropriate angle_width parameter
as shown below.

r.houghtransform input=edge_map@PERMANENT output=line_map 
angles=angle_map@PERMANENT angle_width=6 lines_number=200 gap_size=3 
max_gap_count=6 max_gap=6 line_width=4 --overwrite


I was trying to find a way to generate angle map for a thinned
"line element" image and use the "line element" image and angle
map to extract lines using r.houghtransform.

Thanks for pointing to v.to.db with azimuth option, I will try to figure
out if it can be use to generate an angle map.

Best,

Venka

On 7/25/2023 10:11 AM, Vaclav Petras wrote:

Hi Venka,

i.edge, or Canny Edge Detector, is definitely built for something else.
Lines are output, not input. However, we created i.edge together with
r.houghtransform which works on the result from i.edge or any other thin
lines. The line segments it extracts might be what you are looking for.
Maybe you are just looking for r.to.vect followed by v.to.db with azimuth,
maybe with v.split in between.

Best,
Vaclav

On Mon, 24 Jul 2023 at 06:18, Venka  wrote:


Hi Micha,

Thanks for your response.

Is there any other way to generate edge_map and angle_map
from single pixel width areas?

Venka

On 7/24/2023 6:23 PM, Micha Silver wrote:

AFAIK, the Canny algorithm requires large, wide areas of black pixels,

adjacent

to large wide areas of white pixels in order to find the edge. It

compares the

change in value over a wide "strip" to determine the edge.

It's a bit counter-intuitive, but the algorithm will not work on single

pixel

width areas.


On 24/07/2023 6:28, Venka wrote:

Hi All,

I have a question about Canny Edge Detection using i.edge

1) I produce a thinned binary image as below

r.thin --overwrite input=line_element output=thinned_line_element

a) the "line_element" represents valleys that are, at places, few pixel
wide

b) the output "thinned_line_element" represents valley lines that are
a single pixel wide

2) I run the Canny edge detector on "thinned_line_element" as below
i.edge --overwrite input=thin_line_element output=edge_map

angles_map=angle_map



The resultant "edge_map" produces a monotone (no edges) edge map and

the

"angle_map" outputs the angles
correctly

3) Running the Canny edge detector on the un-thinned "line_element"

i.edge --overwrite input=line_element@PERMANENT output=edge_map1
angles_map=angle_map1

produces both "edge_map1" and "angles_map1" correctly.

Any idea why the Canny edge detector does not produce edge map on

thinned image?


Kind regards,

Venka
___
grass-user mailing list
grass-user@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/grass-user


--
Micha Silver
Ben Gurion Univ.
Sde Boker, Remote Sensing Lab
cell: +972-523-665918



___
grass-user mailing list
grass-user@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/grass-user





___
grass-user mailing list
grass-user@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/grass-user


Re: [GRASS-user] Running canny edge detection on thinned binary image

2023-07-24 Thread Vaclav Petras
Hi Venka,

i.edge, or Canny Edge Detector, is definitely built for something else.
Lines are output, not input. However, we created i.edge together with
r.houghtransform which works on the result from i.edge or any other thin
lines. The line segments it extracts might be what you are looking for.
Maybe you are just looking for r.to.vect followed by v.to.db with azimuth,
maybe with v.split in between.

Best,
Vaclav

On Mon, 24 Jul 2023 at 06:18, Venka  wrote:

> Hi Micha,
>
> Thanks for your response.
>
> Is there any other way to generate edge_map and angle_map
> from single pixel width areas?
>
> Venka
>
> On 7/24/2023 6:23 PM, Micha Silver wrote:
> > AFAIK, the Canny algorithm requires large, wide areas of black pixels,
> adjacent
> > to large wide areas of white pixels in order to find the edge. It
> compares the
> > change in value over a wide "strip" to determine the edge.
> >
> > It's a bit counter-intuitive, but the algorithm will not work on single
> pixel
> > width areas.
> >
> >
> > On 24/07/2023 6:28, Venka wrote:
> >> Hi All,
> >>
> >> I have a question about Canny Edge Detection using i.edge
> >>
> >> 1) I produce a thinned binary image as below
> >>
> >> r.thin --overwrite input=line_element output=thinned_line_element
> >>
> >> a) the "line_element" represents valleys that are, at places, few pixel
> >> wide
> >>
> >> b) the output "thinned_line_element" represents valley lines that are
> >> a single pixel wide
> >>
> >> 2) I run the Canny edge detector on "thinned_line_element" as below
> >> i.edge --overwrite input=thin_line_element output=edge_map
> angles_map=angle_map
> >>
> >>
> >> The resultant "edge_map" produces a monotone (no edges) edge map and
> the
> >> "angle_map" outputs the angles
> >> correctly
> >>
> >> 3) Running the Canny edge detector on the un-thinned "line_element"
> >>
> >> i.edge --overwrite input=line_element@PERMANENT output=edge_map1
> >> angles_map=angle_map1
> >>
> >> produces both "edge_map1" and "angles_map1" correctly.
> >>
> >> Any idea why the Canny edge detector does not produce edge map on
> thinned image?
> >>
> >> Kind regards,
> >>
> >> Venka
> >> ___
> >> grass-user mailing list
> >> grass-user@lists.osgeo.org
> >> https://lists.osgeo.org/mailman/listinfo/grass-user
> >
> > --
> > Micha Silver
> > Ben Gurion Univ.
> > Sde Boker, Remote Sensing Lab
> > cell: +972-523-665918
> >
>
> ___
> grass-user mailing list
> grass-user@lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/grass-user
>
___
grass-user mailing list
grass-user@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/grass-user


Re: [GRASS-user] Running canny edge detection on thinned binary image

2023-07-24 Thread Venka

Hi Micha,

Thanks for your response.

Is there any other way to generate edge_map and angle_map
from single pixel width areas?

Venka

On 7/24/2023 6:23 PM, Micha Silver wrote:

AFAIK, the Canny algorithm requires large, wide areas of black pixels, adjacent
to large wide areas of white pixels in order to find the edge. It compares the
change in value over a wide "strip" to determine the edge.

It's a bit counter-intuitive, but the algorithm will not work on single pixel
width areas.


On 24/07/2023 6:28, Venka wrote:

Hi All,

I have a question about Canny Edge Detection using i.edge

1) I produce a thinned binary image as below

r.thin --overwrite input=line_element output=thinned_line_element

a) the "line_element" represents valleys that are, at places, few pixel
wide

b) the output "thinned_line_element" represents valley lines that are
a single pixel wide

2) I run the Canny edge detector on "thinned_line_element" as below
i.edge --overwrite input=thin_line_element output=edge_map angles_map=angle_map


The resultant "edge_map" produces a monotone (no edges) edge map and the 
"angle_map" outputs the angles

correctly

3) Running the Canny edge detector on the un-thinned "line_element"

i.edge --overwrite input=line_element@PERMANENT output=edge_map1 
angles_map=angle_map1


produces both "edge_map1" and "angles_map1" correctly.

Any idea why the Canny edge detector does not produce edge map on thinned image?

Kind regards,

Venka
___
grass-user mailing list
grass-user@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/grass-user


--
Micha Silver
Ben Gurion Univ.
Sde Boker, Remote Sensing Lab
cell: +972-523-665918



___
grass-user mailing list
grass-user@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/grass-user


Re: [GRASS-user] Running canny edge detection on thinned binary image

2023-07-24 Thread Micha Silver

  
  
AFAIK,
  the Canny algorithm requires large, wide areas of black
  pixels, adjacent to large wide areas of white pixels in order
  to find the edge. It compares the change in value over a wide
  "strip" to determine the edge.
It's a
  bit counter-intuitive, but the algorithm will not work on
  single pixel width areas.


On 24/07/2023 6:28, Venka wrote:

Hi All,
  
  
  I have a question about Canny Edge Detection using i.edge
  
  
  1) I produce a thinned binary image as below
  
  
  r.thin --overwrite input=line_element output=thinned_line_element
  
  
  a) the "line_element" represents valleys that are, at places, few
  pixel
  
  wide
  
  
  b) the output "thinned_line_element" represents valley lines that
  are
  
  a single pixel wide
  
  
  2) I run the Canny edge detector on "thinned_line_element" as
  below
  
  i.edge --overwrite input=thin_line_element output=edge_map
  angles_map=angle_map
  
  
  
  The resultant "edge_map" produces a monotone (no edges) edge map
  and the "angle_map" outputs the angles
  
  correctly
  
  
  3) Running the Canny edge detector on the un-thinned
  "line_element"
  
  
  i.edge --overwrite input=line_element@PERMANENT output=edge_map1
  angles_map=angle_map1
  
  
  produces both "edge_map1" and "angles_map1" correctly.
  
  
  Any idea why the Canny edge detector does not produce edge map on
  thinned image?
  
  
  Kind regards,
  
  
  Venka
  
  ___
  
  grass-user mailing list
  
  grass-user@lists.osgeo.org
  
  https://lists.osgeo.org/mailman/listinfo/grass-user
  

-- 
Micha Silver
Ben Gurion Univ.
Sde Boker, Remote Sensing Lab
cell: +972-523-665918
  

___
grass-user mailing list
grass-user@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/grass-user


[GRASS-user] Running canny edge detection on thinned binary image

2023-07-23 Thread Venka

Hi All,

I have a question about Canny Edge Detection using i.edge

1) I produce a thinned binary image as below

r.thin --overwrite input=line_element output=thinned_line_element

a) the "line_element" represents valleys that are, at places, few pixel
wide

b) the output "thinned_line_element" represents valley lines that are
a single pixel wide

2) I run the Canny edge detector on "thinned_line_element" as below
i.edge --overwrite input=thin_line_element output=edge_map angles_map=angle_map


The resultant "edge_map" produces a monotone (no edges) edge map and the 
"angle_map" outputs the angles
correctly

3) Running the Canny edge detector on the un-thinned "line_element"

i.edge --overwrite input=line_element@PERMANENT output=edge_map1 
angles_map=angle_map1

produces both "edge_map1" and "angles_map1" correctly.

Any idea why the Canny edge detector does not produce edge map on thinned image?

Kind regards,

Venka
___
grass-user mailing list
grass-user@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/grass-user