Find 2D peak prominence using Python
I found this scipy function scipy.signal.peak_prominences that finds the topographic prominence of specified local maxima in a 1d sequence.
But my application requires locating important peaks in a 2D array. I'm aware of some peak finding methods, such as doing a maximum filtering, which both scipy and skimage have their implementations. Also skimage's h_maxima()
allows filtering local peaks that have a minimal relative height. But these only give the coordinates of the peaks, not their prominence .
So how do I compute peak prominence on a 2d array?
Any help would be appreciated.
python image-processing scipy topography
add a comment |
I found this scipy function scipy.signal.peak_prominences that finds the topographic prominence of specified local maxima in a 1d sequence.
But my application requires locating important peaks in a 2D array. I'm aware of some peak finding methods, such as doing a maximum filtering, which both scipy and skimage have their implementations. Also skimage's h_maxima()
allows filtering local peaks that have a minimal relative height. But these only give the coordinates of the peaks, not their prominence .
So how do I compute peak prominence on a 2d array?
Any help would be appreciated.
python image-processing scipy topography
I'm struggling to understand what's going on inside skimage'sh_maxima
, is it true thath_maxima
gives peaks whose prominence >= h, so to get all prominence values I need to scan through the height with a small step?
– Jason
Nov 10 at 12:51
add a comment |
I found this scipy function scipy.signal.peak_prominences that finds the topographic prominence of specified local maxima in a 1d sequence.
But my application requires locating important peaks in a 2D array. I'm aware of some peak finding methods, such as doing a maximum filtering, which both scipy and skimage have their implementations. Also skimage's h_maxima()
allows filtering local peaks that have a minimal relative height. But these only give the coordinates of the peaks, not their prominence .
So how do I compute peak prominence on a 2d array?
Any help would be appreciated.
python image-processing scipy topography
I found this scipy function scipy.signal.peak_prominences that finds the topographic prominence of specified local maxima in a 1d sequence.
But my application requires locating important peaks in a 2D array. I'm aware of some peak finding methods, such as doing a maximum filtering, which both scipy and skimage have their implementations. Also skimage's h_maxima()
allows filtering local peaks that have a minimal relative height. But these only give the coordinates of the peaks, not their prominence .
So how do I compute peak prominence on a 2d array?
Any help would be appreciated.
python image-processing scipy topography
python image-processing scipy topography
asked Nov 10 at 4:45
Jason
707620
707620
I'm struggling to understand what's going on inside skimage'sh_maxima
, is it true thath_maxima
gives peaks whose prominence >= h, so to get all prominence values I need to scan through the height with a small step?
– Jason
Nov 10 at 12:51
add a comment |
I'm struggling to understand what's going on inside skimage'sh_maxima
, is it true thath_maxima
gives peaks whose prominence >= h, so to get all prominence values I need to scan through the height with a small step?
– Jason
Nov 10 at 12:51
I'm struggling to understand what's going on inside skimage's
h_maxima
, is it true that h_maxima
gives peaks whose prominence >= h, so to get all prominence values I need to scan through the height with a small step?– Jason
Nov 10 at 12:51
I'm struggling to understand what's going on inside skimage's
h_maxima
, is it true that h_maxima
gives peaks whose prominence >= h, so to get all prominence values I need to scan through the height with a small step?– Jason
Nov 10 at 12:51
add a comment |
1 Answer
1
active
oldest
votes
I've cooked a python module using enclosing contour method, following wiki's definition:
The prominence of a peak is the height of the peak’s summit above the
lowest contour line encircling it but containing no higher summit
within it.
optionally one can filter out local peaks that have small cross section area or low prominence values.
I've put the code here: https://github.com/Xunius/python_peak_promience2d, if anyone finds any issue or possible improvement please fire an issue or PR.
A demo graph:
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53236058%2ffind-2d-peak-prominence-using-python%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
I've cooked a python module using enclosing contour method, following wiki's definition:
The prominence of a peak is the height of the peak’s summit above the
lowest contour line encircling it but containing no higher summit
within it.
optionally one can filter out local peaks that have small cross section area or low prominence values.
I've put the code here: https://github.com/Xunius/python_peak_promience2d, if anyone finds any issue or possible improvement please fire an issue or PR.
A demo graph:
add a comment |
I've cooked a python module using enclosing contour method, following wiki's definition:
The prominence of a peak is the height of the peak’s summit above the
lowest contour line encircling it but containing no higher summit
within it.
optionally one can filter out local peaks that have small cross section area or low prominence values.
I've put the code here: https://github.com/Xunius/python_peak_promience2d, if anyone finds any issue or possible improvement please fire an issue or PR.
A demo graph:
add a comment |
I've cooked a python module using enclosing contour method, following wiki's definition:
The prominence of a peak is the height of the peak’s summit above the
lowest contour line encircling it but containing no higher summit
within it.
optionally one can filter out local peaks that have small cross section area or low prominence values.
I've put the code here: https://github.com/Xunius/python_peak_promience2d, if anyone finds any issue or possible improvement please fire an issue or PR.
A demo graph:
I've cooked a python module using enclosing contour method, following wiki's definition:
The prominence of a peak is the height of the peak’s summit above the
lowest contour line encircling it but containing no higher summit
within it.
optionally one can filter out local peaks that have small cross section area or low prominence values.
I've put the code here: https://github.com/Xunius/python_peak_promience2d, if anyone finds any issue or possible improvement please fire an issue or PR.
A demo graph:
edited Nov 12 at 7:26
answered Nov 11 at 11:17
Jason
707620
707620
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53236058%2ffind-2d-peak-prominence-using-python%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
I'm struggling to understand what's going on inside skimage's
h_maxima
, is it true thath_maxima
gives peaks whose prominence >= h, so to get all prominence values I need to scan through the height with a small step?– Jason
Nov 10 at 12:51