Skip to content
Merged
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
7672d1a
added laplacian_filter file
ojas-wani Oct 5, 2023
642af23
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
5e6100c
updated laplacian.py
ojas-wani Oct 5, 2023
3819098
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
5a5a84d
updated laplacian_py
ojas-wani Oct 5, 2023
2cbbe3a
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
f233a54
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
19a7879
updated laplacian_filter.py
ojas-wani Oct 5, 2023
d8040f5
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
6c5b418
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
ea541e6
updated laplacian_filter.py
ojas-wani Oct 5, 2023
86dc5a9
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
de92d3d
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
8325b64
updated laplacian_filter.py
ojas-wani Oct 5, 2023
e6fda58
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
cccf2a9
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
5f9331a
required changes to laplacian file
ojas-wani Oct 5, 2023
35f8b7a
changed laplacian_filter.py
ojas-wani Oct 5, 2023
aa0da39
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
d451d62
changed laplacian_filter.py
ojas-wani Oct 5, 2023
dabd6c9
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
4a118f3
changed laplacian_filter.py
ojas-wani Oct 5, 2023
39b3363
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
8656afd
changed laplacian_filter.py
ojas-wani Oct 5, 2023
552a873
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
641c063
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
2fd6024
changed laplacian_filter.py
ojas-wani Oct 5, 2023
667055a
changed laplacian_filter.py
ojas-wani Oct 5, 2023
0d83b21
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
2af89bc
updated laplacian_filter.py
ojas-wani Oct 5, 2023
b2e2308
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
1c72a65
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
0ce40a2
update laplacian_filter.py
ojas-wani Oct 5, 2023
34942b3
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
891da5e
update laplacian_filter.py
ojas-wani Oct 5, 2023
f52f3b5
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
24d265b
update laplacian_filter.py
ojas-wani Oct 5, 2023
435efe6
changed laplacian_filter.py
ojas-wani Oct 5, 2023
e36fa6a
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
84c0273
changed laplacian_filter.py
ojas-wani Oct 5, 2023
9550244
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
3718979
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
e30c558
changed laplacian_filter.py
ojas-wani Oct 5, 2023
5824fcb
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
1bcbd84
changed laplacian_filter.py
ojas-wani Oct 5, 2023
532e385
changed laplacian_filter.py
ojas-wani Oct 5, 2023
e09582f
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
2d184c5
Update laplacian_filter.py
cclauss Oct 5, 2023
7159ffe
Add a test
cclauss Oct 5, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 81 additions & 0 deletions digital_image_processing/filters/laplacian_filter.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
# @Author : ojas-wani
Comment thread
ojas-wani marked this conversation as resolved.
# @File : laplacian_filter.py
# @Date : 10/04/2023

import numpy as np
from cv2 import (
BORDER_DEFAULT,
COLOR_BGR2GRAY,
CV_64F,
cvtColor,
filter2D,
imread,
imshow,
waitKey,
)

Comment thread
cclauss marked this conversation as resolved.
from digital_image_processing.filters.gaussian_filter import gaussian_filter
Comment thread
cclauss marked this conversation as resolved.


def my_laplacian(src: np.ndarray, ksize: int) -> np.ndarray:
Comment thread
cclauss marked this conversation as resolved.
Comment thread
cclauss marked this conversation as resolved.
Comment thread
cclauss marked this conversation as resolved.
Comment thread
cclauss marked this conversation as resolved.
Comment thread
cclauss marked this conversation as resolved.
"""
Comment thread
cclauss marked this conversation as resolved.
:param src: the source image, which should be a grayscale or color image.
:param ksize: the size of the kernel used to compute the Laplacian filter,
which can be 1, 3, 5, or 7.

>>> my_laplacian(src=np.array([]), ksize=0)
Traceback (most recent call last):
...
ValueError: ksize must be in (1, 3, 5, 7)
"""
kernels = {
1: np.array([[0, -1, 0], [-1, 4, -1], [0, -1, 0]]),
3: np.array([[0, 1, 0], [1, -4, 1], [0, 1, 0]]),
5: np.array(
[
[0, 0, -1, 0, 0],
[0, -1, -2, -1, 0],
[-1, -2, 16, -2, -1],
[0, -1, -2, -1, 0],
[0, 0, -1, 0, 0],
]
),
7: np.array(
[
[0, 0, 0, -1, 0, 0, 0],
[0, 0, -2, -3, -2, 0, 0],
[0, -2, -7, -10, -7, -2, 0],
[-1, -3, -10, 68, -10, -3, -1],
[0, -2, -7, -10, -7, -2, 0],
[0, 0, -2, -3, -2, 0, 0],
[0, 0, 0, -1, 0, 0, 0],
]
),
}
if ksize not in kernels:
msg = f"ksize must be in {tuple(kernels)}"
raise ValueError(msg)

# Apply the Laplacian kernel using convolution
return filter2D(
src, CV_64F, kernels[ksize], 0, borderType=BORDER_DEFAULT, anchor=(0, 0)
)


if __name__ == "__main__":
# read original image
img = imread(r"../image_data/lena.jpg")

# turn image in gray scale value
gray = cvtColor(img, COLOR_BGR2GRAY)

# Applying gaussian filter
blur_image = gaussian_filter(gray, 3, sigma=1)

# Apply multiple Kernel to detect edges
laplacian_image = my_laplacian(ksize=3, src=blur_image)

imshow("Original image", img)
imshow("Detected edges using laplacian filter", laplacian_image)

waitKey(0)
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
added laplacian_filter file by ojas-wani · Pull Request #9783 · TheAlgorithms/Python · GitHub
Skip to content
Merged
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
7672d1a
added laplacian_filter file
ojas-wani Oct 5, 2023
642af23
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
5e6100c
updated laplacian.py
ojas-wani Oct 5, 2023
3819098
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
5a5a84d
updated laplacian_py
ojas-wani Oct 5, 2023
2cbbe3a
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
f233a54
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
19a7879
updated laplacian_filter.py
ojas-wani Oct 5, 2023
d8040f5
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
6c5b418
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
ea541e6
updated laplacian_filter.py
ojas-wani Oct 5, 2023
86dc5a9
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
de92d3d
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
8325b64
updated laplacian_filter.py
ojas-wani Oct 5, 2023
e6fda58
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
cccf2a9
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
5f9331a
required changes to laplacian file
ojas-wani Oct 5, 2023
35f8b7a
changed laplacian_filter.py
ojas-wani Oct 5, 2023
aa0da39
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
d451d62
changed laplacian_filter.py
ojas-wani Oct 5, 2023
dabd6c9
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
4a118f3
changed laplacian_filter.py
ojas-wani Oct 5, 2023
39b3363
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
8656afd
changed laplacian_filter.py
ojas-wani Oct 5, 2023
552a873
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
641c063
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
2fd6024
changed laplacian_filter.py
ojas-wani Oct 5, 2023
667055a
changed laplacian_filter.py
ojas-wani Oct 5, 2023
0d83b21
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
2af89bc
updated laplacian_filter.py
ojas-wani Oct 5, 2023
b2e2308
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
1c72a65
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
0ce40a2
update laplacian_filter.py
ojas-wani Oct 5, 2023
34942b3
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
891da5e
update laplacian_filter.py
ojas-wani Oct 5, 2023
f52f3b5
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
24d265b
update laplacian_filter.py
ojas-wani Oct 5, 2023
435efe6
changed laplacian_filter.py
ojas-wani Oct 5, 2023
e36fa6a
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
84c0273
changed laplacian_filter.py
ojas-wani Oct 5, 2023
9550244
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
3718979
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
e30c558
changed laplacian_filter.py
ojas-wani Oct 5, 2023
5824fcb
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
1bcbd84
changed laplacian_filter.py
ojas-wani Oct 5, 2023
532e385
changed laplacian_filter.py
ojas-wani Oct 5, 2023
e09582f
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
2d184c5
Update laplacian_filter.py
cclauss Oct 5, 2023
7159ffe
Add a test
cclauss Oct 5, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 81 additions & 0 deletions digital_image_processing/filters/laplacian_filter.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
# @Author : ojas-wani
Comment thread
ojas-wani marked this conversation as resolved.
# @File : laplacian_filter.py
# @Date : 10/04/2023

import numpy as np
from cv2 import (
BORDER_DEFAULT,
COLOR_BGR2GRAY,
CV_64F,
cvtColor,
filter2D,
imread,
imshow,
waitKey,
)

Comment thread
cclauss marked this conversation as resolved.
from digital_image_processing.filters.gaussian_filter import gaussian_filter
Comment thread
cclauss marked this conversation as resolved.


def my_laplacian(src: np.ndarray, ksize: int) -> np.ndarray:
Comment thread
cclauss marked this conversation as resolved.
Comment thread
cclauss marked this conversation as resolved.
Comment thread
cclauss marked this conversation as resolved.
Comment thread
cclauss marked this conversation as resolved.
Comment thread
cclauss marked this conversation as resolved.
"""
Comment thread
cclauss marked this conversation as resolved.
:param src: the source image, which should be a grayscale or color image.
:param ksize: the size of the kernel used to compute the Laplacian filter,
which can be 1, 3, 5, or 7.

>>> my_laplacian(src=np.array([]), ksize=0)
Traceback (most recent call last):
...
ValueError: ksize must be in (1, 3, 5, 7)
"""
kernels = {
1: np.array([[0, -1, 0], [-1, 4, -1], [0, -1, 0]]),
3: np.array([[0, 1, 0], [1, -4, 1], [0, 1, 0]]),
5: np.array(
[
[0, 0, -1, 0, 0],
[0, -1, -2, -1, 0],
[-1, -2, 16, -2, -1],
[0, -1, -2, -1, 0],
[0, 0, -1, 0, 0],
]
),
7: np.array(
[
[0, 0, 0, -1, 0, 0, 0],
[0, 0, -2, -3, -2, 0, 0],
[0, -2, -7, -10, -7, -2, 0],
[-1, -3, -10, 68, -10, -3, -1],
[0, -2, -7, -10, -7, -2, 0],
[0, 0, -2, -3, -2, 0, 0],
[0, 0, 0, -1, 0, 0, 0],
]
),
}
if ksize not in kernels:
msg = f"ksize must be in {tuple(kernels)}"
raise ValueError(msg)

# Apply the Laplacian kernel using convolution
return filter2D(
src, CV_64F, kernels[ksize], 0, borderType=BORDER_DEFAULT, anchor=(0, 0)
)


if __name__ == "__main__":
# read original image
img = imread(r"../image_data/lena.jpg")

# turn image in gray scale value
gray = cvtColor(img, COLOR_BGR2GRAY)

# Applying gaussian filter
blur_image = gaussian_filter(gray, 3, sigma=1)

# Apply multiple Kernel to detect edges
laplacian_image = my_laplacian(ksize=3, src=blur_image)

imshow("Original image", img)
imshow("Detected edges using laplacian filter", laplacian_image)

waitKey(0)
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' added laplacian_filter file by ojas-wani · Pull Request #9783 · TheAlgorithms/Python · GitHub
Skip to content
Merged
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
7672d1a
added laplacian_filter file
ojas-wani Oct 5, 2023
642af23
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
5e6100c
updated laplacian.py
ojas-wani Oct 5, 2023
3819098
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
5a5a84d
updated laplacian_py
ojas-wani Oct 5, 2023
2cbbe3a
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
f233a54
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
19a7879
updated laplacian_filter.py
ojas-wani Oct 5, 2023
d8040f5
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
6c5b418
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
ea541e6
updated laplacian_filter.py
ojas-wani Oct 5, 2023
86dc5a9
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
de92d3d
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
8325b64
updated laplacian_filter.py
ojas-wani Oct 5, 2023
e6fda58
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
cccf2a9
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
5f9331a
required changes to laplacian file
ojas-wani Oct 5, 2023
35f8b7a
changed laplacian_filter.py
ojas-wani Oct 5, 2023
aa0da39
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
d451d62
changed laplacian_filter.py
ojas-wani Oct 5, 2023
dabd6c9
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
4a118f3
changed laplacian_filter.py
ojas-wani Oct 5, 2023
39b3363
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
8656afd
changed laplacian_filter.py
ojas-wani Oct 5, 2023
552a873
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
641c063
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
2fd6024
changed laplacian_filter.py
ojas-wani Oct 5, 2023
667055a
changed laplacian_filter.py
ojas-wani Oct 5, 2023
0d83b21
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
2af89bc
updated laplacian_filter.py
ojas-wani Oct 5, 2023
b2e2308
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
1c72a65
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
0ce40a2
update laplacian_filter.py
ojas-wani Oct 5, 2023
34942b3
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
891da5e
update laplacian_filter.py
ojas-wani Oct 5, 2023
f52f3b5
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
24d265b
update laplacian_filter.py
ojas-wani Oct 5, 2023
435efe6
changed laplacian_filter.py
ojas-wani Oct 5, 2023
e36fa6a
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
84c0273
changed laplacian_filter.py
ojas-wani Oct 5, 2023
9550244
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
3718979
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
e30c558
changed laplacian_filter.py
ojas-wani Oct 5, 2023
5824fcb
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
1bcbd84
changed laplacian_filter.py
ojas-wani Oct 5, 2023
532e385
changed laplacian_filter.py
ojas-wani Oct 5, 2023
e09582f
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
2d184c5
Update laplacian_filter.py
cclauss Oct 5, 2023
7159ffe
Add a test
cclauss Oct 5, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 81 additions & 0 deletions digital_image_processing/filters/laplacian_filter.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
# @Author : ojas-wani
Comment thread
ojas-wani marked this conversation as resolved.
# @File : laplacian_filter.py
# @Date : 10/04/2023

import numpy as np
from cv2 import (
BORDER_DEFAULT,
COLOR_BGR2GRAY,
CV_64F,
cvtColor,
filter2D,
imread,
imshow,
waitKey,
)

Comment thread
cclauss marked this conversation as resolved.
from digital_image_processing.filters.gaussian_filter import gaussian_filter
Comment thread
cclauss marked this conversation as resolved.


def my_laplacian(src: np.ndarray, ksize: int) -> np.ndarray:
Comment thread
cclauss marked this conversation as resolved.
Comment thread
cclauss marked this conversation as resolved.
Comment thread
cclauss marked this conversation as resolved.
Comment thread
cclauss marked this conversation as resolved.
Comment thread
cclauss marked this conversation as resolved.
"""
Comment thread
cclauss marked this conversation as resolved.
:param src: the source image, which should be a grayscale or color image.
:param ksize: the size of the kernel used to compute the Laplacian filter,
which can be 1, 3, 5, or 7.

>>> my_laplacian(src=np.array([]), ksize=0)
Traceback (most recent call last):
...
ValueError: ksize must be in (1, 3, 5, 7)
"""
kernels = {
1: np.array([[0, -1, 0], [-1, 4, -1], [0, -1, 0]]),
3: np.array([[0, 1, 0], [1, -4, 1], [0, 1, 0]]),
5: np.array(
[
[0, 0, -1, 0, 0],
[0, -1, -2, -1, 0],
[-1, -2, 16, -2, -1],
[0, -1, -2, -1, 0],
[0, 0, -1, 0, 0],
]
),
7: np.array(
[
[0, 0, 0, -1, 0, 0, 0],
[0, 0, -2, -3, -2, 0, 0],
[0, -2, -7, -10, -7, -2, 0],
[-1, -3, -10, 68, -10, -3, -1],
[0, -2, -7, -10, -7, -2, 0],
[0, 0, -2, -3, -2, 0, 0],
[0, 0, 0, -1, 0, 0, 0],
]
),
}
if ksize not in kernels:
msg = f"ksize must be in {tuple(kernels)}"
raise ValueError(msg)

# Apply the Laplacian kernel using convolution
return filter2D(
src, CV_64F, kernels[ksize], 0, borderType=BORDER_DEFAULT, anchor=(0, 0)
)


if __name__ == "__main__":
# read original image
img = imread(r"../image_data/lena.jpg")

# turn image in gray scale value
gray = cvtColor(img, COLOR_BGR2GRAY)

# Applying gaussian filter
blur_image = gaussian_filter(gray, 3, sigma=1)

# Apply multiple Kernel to detect edges
laplacian_image = my_laplacian(ksize=3, src=blur_image)

imshow("Original image", img)
imshow("Detected edges using laplacian filter", laplacian_image)

waitKey(0)
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' added laplacian_filter file by ojas-wani · Pull Request #9783 · TheAlgorithms/Python · GitHub
Skip to content
Merged
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
7672d1a
added laplacian_filter file
ojas-wani Oct 5, 2023
642af23
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
5e6100c
updated laplacian.py
ojas-wani Oct 5, 2023
3819098
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
5a5a84d
updated laplacian_py
ojas-wani Oct 5, 2023
2cbbe3a
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
f233a54
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
19a7879
updated laplacian_filter.py
ojas-wani Oct 5, 2023
d8040f5
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
6c5b418
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
ea541e6
updated laplacian_filter.py
ojas-wani Oct 5, 2023
86dc5a9
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
de92d3d
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
8325b64
updated laplacian_filter.py
ojas-wani Oct 5, 2023
e6fda58
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
cccf2a9
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
5f9331a
required changes to laplacian file
ojas-wani Oct 5, 2023
35f8b7a
changed laplacian_filter.py
ojas-wani Oct 5, 2023
aa0da39
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
d451d62
changed laplacian_filter.py
ojas-wani Oct 5, 2023
dabd6c9
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
4a118f3
changed laplacian_filter.py
ojas-wani Oct 5, 2023
39b3363
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
8656afd
changed laplacian_filter.py
ojas-wani Oct 5, 2023
552a873
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
641c063
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
2fd6024
changed laplacian_filter.py
ojas-wani Oct 5, 2023
667055a
changed laplacian_filter.py
ojas-wani Oct 5, 2023
0d83b21
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
2af89bc
updated laplacian_filter.py
ojas-wani Oct 5, 2023
b2e2308
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
1c72a65
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
0ce40a2
update laplacian_filter.py
ojas-wani Oct 5, 2023
34942b3
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
891da5e
update laplacian_filter.py
ojas-wani Oct 5, 2023
f52f3b5
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
24d265b
update laplacian_filter.py
ojas-wani Oct 5, 2023
435efe6
changed laplacian_filter.py
ojas-wani Oct 5, 2023
e36fa6a
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
84c0273
changed laplacian_filter.py
ojas-wani Oct 5, 2023
9550244
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
3718979
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
e30c558
changed laplacian_filter.py
ojas-wani Oct 5, 2023
5824fcb
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
1bcbd84
changed laplacian_filter.py
ojas-wani Oct 5, 2023
532e385
changed laplacian_filter.py
ojas-wani Oct 5, 2023
e09582f
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
2d184c5
Update laplacian_filter.py
cclauss Oct 5, 2023
7159ffe
Add a test
cclauss Oct 5, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 81 additions & 0 deletions digital_image_processing/filters/laplacian_filter.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
# @Author : ojas-wani
Comment thread
ojas-wani marked this conversation as resolved.
# @File : laplacian_filter.py
# @Date : 10/04/2023

import numpy as np
from cv2 import (
BORDER_DEFAULT,
COLOR_BGR2GRAY,
CV_64F,
cvtColor,
filter2D,
imread,
imshow,
waitKey,
)

Comment thread
cclauss marked this conversation as resolved.
from digital_image_processing.filters.gaussian_filter import gaussian_filter
Comment thread
cclauss marked this conversation as resolved.


def my_laplacian(src: np.ndarray, ksize: int) -> np.ndarray:
Comment thread
cclauss marked this conversation as resolved.
Comment thread
cclauss marked this conversation as resolved.
Comment thread
cclauss marked this conversation as resolved.
Comment thread
cclauss marked this conversation as resolved.
Comment thread
cclauss marked this conversation as resolved.
"""
Comment thread
cclauss marked this conversation as resolved.
:param src: the source image, which should be a grayscale or color image.
:param ksize: the size of the kernel used to compute the Laplacian filter,
which can be 1, 3, 5, or 7.

>>> my_laplacian(src=np.array([]), ksize=0)
Traceback (most recent call last):
...
ValueError: ksize must be in (1, 3, 5, 7)
"""
kernels = {
1: np.array([[0, -1, 0], [-1, 4, -1], [0, -1, 0]]),
3: np.array([[0, 1, 0], [1, -4, 1], [0, 1, 0]]),
5: np.array(
[
[0, 0, -1, 0, 0],
[0, -1, -2, -1, 0],
[-1, -2, 16, -2, -1],
[0, -1, -2, -1, 0],
[0, 0, -1, 0, 0],
]
),
7: np.array(
[
[0, 0, 0, -1, 0, 0, 0],
[0, 0, -2, -3, -2, 0, 0],
[0, -2, -7, -10, -7, -2, 0],
[-1, -3, -10, 68, -10, -3, -1],
[0, -2, -7, -10, -7, -2, 0],
[0, 0, -2, -3, -2, 0, 0],
[0, 0, 0, -1, 0, 0, 0],
]
),
}
if ksize not in kernels:
msg = f"ksize must be in {tuple(kernels)}"
raise ValueError(msg)

# Apply the Laplacian kernel using convolution
return filter2D(
src, CV_64F, kernels[ksize], 0, borderType=BORDER_DEFAULT, anchor=(0, 0)
)


if __name__ == "__main__":
# read original image
img = imread(r"../image_data/lena.jpg")

# turn image in gray scale value
gray = cvtColor(img, COLOR_BGR2GRAY)

# Applying gaussian filter
blur_image = gaussian_filter(gray, 3, sigma=1)

# Apply multiple Kernel to detect edges
laplacian_image = my_laplacian(ksize=3, src=blur_image)

imshow("Original image", img)
imshow("Detected edges using laplacian filter", laplacian_image)

waitKey(0)
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' added laplacian_filter file by ojas-wani · Pull Request #9783 · TheAlgorithms/Python · GitHub
Skip to content
Merged
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
7672d1a
added laplacian_filter file
ojas-wani Oct 5, 2023
642af23
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
5e6100c
updated laplacian.py
ojas-wani Oct 5, 2023
3819098
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
5a5a84d
updated laplacian_py
ojas-wani Oct 5, 2023
2cbbe3a
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
f233a54
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
19a7879
updated laplacian_filter.py
ojas-wani Oct 5, 2023
d8040f5
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
6c5b418
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
ea541e6
updated laplacian_filter.py
ojas-wani Oct 5, 2023
86dc5a9
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
de92d3d
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
8325b64
updated laplacian_filter.py
ojas-wani Oct 5, 2023
e6fda58
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
cccf2a9
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
5f9331a
required changes to laplacian file
ojas-wani Oct 5, 2023
35f8b7a
changed laplacian_filter.py
ojas-wani Oct 5, 2023
aa0da39
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
d451d62
changed laplacian_filter.py
ojas-wani Oct 5, 2023
dabd6c9
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
4a118f3
changed laplacian_filter.py
ojas-wani Oct 5, 2023
39b3363
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
8656afd
changed laplacian_filter.py
ojas-wani Oct 5, 2023
552a873
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
641c063
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
2fd6024
changed laplacian_filter.py
ojas-wani Oct 5, 2023
667055a
changed laplacian_filter.py
ojas-wani Oct 5, 2023
0d83b21
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
2af89bc
updated laplacian_filter.py
ojas-wani Oct 5, 2023
b2e2308
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
1c72a65
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
0ce40a2
update laplacian_filter.py
ojas-wani Oct 5, 2023
34942b3
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
891da5e
update laplacian_filter.py
ojas-wani Oct 5, 2023
f52f3b5
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
24d265b
update laplacian_filter.py
ojas-wani Oct 5, 2023
435efe6
changed laplacian_filter.py
ojas-wani Oct 5, 2023
e36fa6a
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
84c0273
changed laplacian_filter.py
ojas-wani Oct 5, 2023
9550244
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
3718979
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
e30c558
changed laplacian_filter.py
ojas-wani Oct 5, 2023
5824fcb
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
1bcbd84
changed laplacian_filter.py
ojas-wani Oct 5, 2023
532e385
changed laplacian_filter.py
ojas-wani Oct 5, 2023
e09582f
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
2d184c5
Update laplacian_filter.py
cclauss Oct 5, 2023
7159ffe
Add a test
cclauss Oct 5, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 81 additions & 0 deletions digital_image_processing/filters/laplacian_filter.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
# @Author : ojas-wani
Comment thread
ojas-wani marked this conversation as resolved.
# @File : laplacian_filter.py
# @Date : 10/04/2023

import numpy as np
from cv2 import (
BORDER_DEFAULT,
COLOR_BGR2GRAY,
CV_64F,
cvtColor,
filter2D,
imread,
imshow,
waitKey,
)

Comment thread
cclauss marked this conversation as resolved.
from digital_image_processing.filters.gaussian_filter import gaussian_filter
Comment thread
cclauss marked this conversation as resolved.


def my_laplacian(src: np.ndarray, ksize: int) -> np.ndarray:
Comment thread
cclauss marked this conversation as resolved.
Comment thread
cclauss marked this conversation as resolved.
Comment thread
cclauss marked this conversation as resolved.
Comment thread
cclauss marked this conversation as resolved.
Comment thread
cclauss marked this conversation as resolved.
"""
Comment thread
cclauss marked this conversation as resolved.
:param src: the source image, which should be a grayscale or color image.
:param ksize: the size of the kernel used to compute the Laplacian filter,
which can be 1, 3, 5, or 7.

>>> my_laplacian(src=np.array([]), ksize=0)
Traceback (most recent call last):
...
ValueError: ksize must be in (1, 3, 5, 7)
"""
kernels = {
1: np.array([[0, -1, 0], [-1, 4, -1], [0, -1, 0]]),
3: np.array([[0, 1, 0], [1, -4, 1], [0, 1, 0]]),
5: np.array(
[
[0, 0, -1, 0, 0],
[0, -1, -2, -1, 0],
[-1, -2, 16, -2, -1],
[0, -1, -2, -1, 0],
[0, 0, -1, 0, 0],
]
),
7: np.array(
[
[0, 0, 0, -1, 0, 0, 0],
[0, 0, -2, -3, -2, 0, 0],
[0, -2, -7, -10, -7, -2, 0],
[-1, -3, -10, 68, -10, -3, -1],
[0, -2, -7, -10, -7, -2, 0],
[0, 0, -2, -3, -2, 0, 0],
[0, 0, 0, -1, 0, 0, 0],
]
),
}
if ksize not in kernels:
msg = f"ksize must be in {tuple(kernels)}"
raise ValueError(msg)

# Apply the Laplacian kernel using convolution
return filter2D(
src, CV_64F, kernels[ksize], 0, borderType=BORDER_DEFAULT, anchor=(0, 0)
)


if __name__ == "__main__":
# read original image
img = imread(r"../image_data/lena.jpg")

# turn image in gray scale value
gray = cvtColor(img, COLOR_BGR2GRAY)

# Applying gaussian filter
blur_image = gaussian_filter(gray, 3, sigma=1)

# Apply multiple Kernel to detect edges
laplacian_image = my_laplacian(ksize=3, src=blur_image)

imshow("Original image", img)
imshow("Detected edges using laplacian filter", laplacian_image)

waitKey(0)
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' added laplacian_filter file by ojas-wani · Pull Request #9783 · TheAlgorithms/Python · GitHub
Skip to content
Merged
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
7672d1a
added laplacian_filter file
ojas-wani Oct 5, 2023
642af23
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
5e6100c
updated laplacian.py
ojas-wani Oct 5, 2023
3819098
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
5a5a84d
updated laplacian_py
ojas-wani Oct 5, 2023
2cbbe3a
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
f233a54
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
19a7879
updated laplacian_filter.py
ojas-wani Oct 5, 2023
d8040f5
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
6c5b418
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
ea541e6
updated laplacian_filter.py
ojas-wani Oct 5, 2023
86dc5a9
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
de92d3d
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
8325b64
updated laplacian_filter.py
ojas-wani Oct 5, 2023
e6fda58
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
cccf2a9
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
5f9331a
required changes to laplacian file
ojas-wani Oct 5, 2023
35f8b7a
changed laplacian_filter.py
ojas-wani Oct 5, 2023
aa0da39
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
d451d62
changed laplacian_filter.py
ojas-wani Oct 5, 2023
dabd6c9
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
4a118f3
changed laplacian_filter.py
ojas-wani Oct 5, 2023
39b3363
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
8656afd
changed laplacian_filter.py
ojas-wani Oct 5, 2023
552a873
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
641c063
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
2fd6024
changed laplacian_filter.py
ojas-wani Oct 5, 2023
667055a
changed laplacian_filter.py
ojas-wani Oct 5, 2023
0d83b21
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
2af89bc
updated laplacian_filter.py
ojas-wani Oct 5, 2023
b2e2308
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
1c72a65
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
0ce40a2
update laplacian_filter.py
ojas-wani Oct 5, 2023
34942b3
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
891da5e
update laplacian_filter.py
ojas-wani Oct 5, 2023
f52f3b5
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
24d265b
update laplacian_filter.py
ojas-wani Oct 5, 2023
435efe6
changed laplacian_filter.py
ojas-wani Oct 5, 2023
e36fa6a
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
84c0273
changed laplacian_filter.py
ojas-wani Oct 5, 2023
9550244
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
3718979
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
e30c558
changed laplacian_filter.py
ojas-wani Oct 5, 2023
5824fcb
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
1bcbd84
changed laplacian_filter.py
ojas-wani Oct 5, 2023
532e385
changed laplacian_filter.py
ojas-wani Oct 5, 2023
e09582f
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
2d184c5
Update laplacian_filter.py
cclauss Oct 5, 2023
7159ffe
Add a test
cclauss Oct 5, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 81 additions & 0 deletions digital_image_processing/filters/laplacian_filter.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
# @Author : ojas-wani
Comment thread
ojas-wani marked this conversation as resolved.
# @File : laplacian_filter.py
# @Date : 10/04/2023

import numpy as np
from cv2 import (
BORDER_DEFAULT,
COLOR_BGR2GRAY,
CV_64F,
cvtColor,
filter2D,
imread,
imshow,
waitKey,
)

Comment thread
cclauss marked this conversation as resolved.
from digital_image_processing.filters.gaussian_filter import gaussian_filter
Comment thread
cclauss marked this conversation as resolved.


def my_laplacian(src: np.ndarray, ksize: int) -> np.ndarray:
Comment thread
cclauss marked this conversation as resolved.
Comment thread
cclauss marked this conversation as resolved.
Comment thread
cclauss marked this conversation as resolved.
Comment thread
cclauss marked this conversation as resolved.
Comment thread
cclauss marked this conversation as resolved.
"""
Comment thread
cclauss marked this conversation as resolved.
:param src: the source image, which should be a grayscale or color image.
:param ksize: the size of the kernel used to compute the Laplacian filter,
which can be 1, 3, 5, or 7.

>>> my_laplacian(src=np.array([]), ksize=0)
Traceback (most recent call last):
...
ValueError: ksize must be in (1, 3, 5, 7)
"""
kernels = {
1: np.array([[0, -1, 0], [-1, 4, -1], [0, -1, 0]]),
3: np.array([[0, 1, 0], [1, -4, 1], [0, 1, 0]]),
5: np.array(
[
[0, 0, -1, 0, 0],
[0, -1, -2, -1, 0],
[-1, -2, 16, -2, -1],
[0, -1, -2, -1, 0],
[0, 0, -1, 0, 0],
]
),
7: np.array(
[
[0, 0, 0, -1, 0, 0, 0],
[0, 0, -2, -3, -2, 0, 0],
[0, -2, -7, -10, -7, -2, 0],
[-1, -3, -10, 68, -10, -3, -1],
[0, -2, -7, -10, -7, -2, 0],
[0, 0, -2, -3, -2, 0, 0],
[0, 0, 0, -1, 0, 0, 0],
]
),
}
if ksize not in kernels:
msg = f"ksize must be in {tuple(kernels)}"
raise ValueError(msg)

# Apply the Laplacian kernel using convolution
return filter2D(
src, CV_64F, kernels[ksize], 0, borderType=BORDER_DEFAULT, anchor=(0, 0)
)


if __name__ == "__main__":
# read original image
img = imread(r"../image_data/lena.jpg")

# turn image in gray scale value
gray = cvtColor(img, COLOR_BGR2GRAY)

# Applying gaussian filter
blur_image = gaussian_filter(gray, 3, sigma=1)

# Apply multiple Kernel to detect edges
laplacian_image = my_laplacian(ksize=3, src=blur_image)

imshow("Original image", img)
imshow("Detected edges using laplacian filter", laplacian_image)

waitKey(0)
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); added laplacian_filter file by ojas-wani · Pull Request #9783 · TheAlgorithms/Python · GitHub
Skip to content
Merged
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
7672d1a
added laplacian_filter file
ojas-wani Oct 5, 2023
642af23
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
5e6100c
updated laplacian.py
ojas-wani Oct 5, 2023
3819098
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
5a5a84d
updated laplacian_py
ojas-wani Oct 5, 2023
2cbbe3a
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
f233a54
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
19a7879
updated laplacian_filter.py
ojas-wani Oct 5, 2023
d8040f5
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
6c5b418
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
ea541e6
updated laplacian_filter.py
ojas-wani Oct 5, 2023
86dc5a9
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
de92d3d
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
8325b64
updated laplacian_filter.py
ojas-wani Oct 5, 2023
e6fda58
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
cccf2a9
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
5f9331a
required changes to laplacian file
ojas-wani Oct 5, 2023
35f8b7a
changed laplacian_filter.py
ojas-wani Oct 5, 2023
aa0da39
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
d451d62
changed laplacian_filter.py
ojas-wani Oct 5, 2023
dabd6c9
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
4a118f3
changed laplacian_filter.py
ojas-wani Oct 5, 2023
39b3363
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
8656afd
changed laplacian_filter.py
ojas-wani Oct 5, 2023
552a873
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
641c063
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
2fd6024
changed laplacian_filter.py
ojas-wani Oct 5, 2023
667055a
changed laplacian_filter.py
ojas-wani Oct 5, 2023
0d83b21
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
2af89bc
updated laplacian_filter.py
ojas-wani Oct 5, 2023
b2e2308
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
1c72a65
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
0ce40a2
update laplacian_filter.py
ojas-wani Oct 5, 2023
34942b3
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
891da5e
update laplacian_filter.py
ojas-wani Oct 5, 2023
f52f3b5
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
24d265b
update laplacian_filter.py
ojas-wani Oct 5, 2023
435efe6
changed laplacian_filter.py
ojas-wani Oct 5, 2023
e36fa6a
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
84c0273
changed laplacian_filter.py
ojas-wani Oct 5, 2023
9550244
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
3718979
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
e30c558
changed laplacian_filter.py
ojas-wani Oct 5, 2023
5824fcb
Merge branch 'laplacian-filter' of https://github.com/ojas-wani/Pytho…
ojas-wani Oct 5, 2023
1bcbd84
changed laplacian_filter.py
ojas-wani Oct 5, 2023
532e385
changed laplacian_filter.py
ojas-wani Oct 5, 2023
e09582f
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Oct 5, 2023
2d184c5
Update laplacian_filter.py
cclauss Oct 5, 2023
7159ffe
Add a test
cclauss Oct 5, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 81 additions & 0 deletions digital_image_processing/filters/laplacian_filter.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
# @Author : ojas-wani
Comment thread
ojas-wani marked this conversation as resolved.
# @File : laplacian_filter.py
# @Date : 10/04/2023

import numpy as np
from cv2 import (
BORDER_DEFAULT,
COLOR_BGR2GRAY,
CV_64F,
cvtColor,
filter2D,
imread,
imshow,
waitKey,
)

Comment thread
cclauss marked this conversation as resolved.
from digital_image_processing.filters.gaussian_filter import gaussian_filter
Comment thread
cclauss marked this conversation as resolved.


def my_laplacian(src: np.ndarray, ksize: int) -> np.ndarray:
Comment thread
cclauss marked this conversation as resolved.
Comment thread
cclauss marked this conversation as resolved.
Comment thread
cclauss marked this conversation as resolved.
Comment thread
cclauss marked this conversation as resolved.
Comment thread
cclauss marked this conversation as resolved.
"""
Comment thread
cclauss marked this conversation as resolved.
:param src: the source image, which should be a grayscale or color image.
:param ksize: the size of the kernel used to compute the Laplacian filter,
which can be 1, 3, 5, or 7.

>>> my_laplacian(src=np.array([]), ksize=0)
Traceback (most recent call last):
...
ValueError: ksize must be in (1, 3, 5, 7)
"""
kernels = {
1: np.array([[0, -1, 0], [-1, 4, -1], [0, -1, 0]]),
3: np.array([[0, 1, 0], [1, -4, 1], [0, 1, 0]]),
5: np.array(
[
[0, 0, -1, 0, 0],
[0, -1, -2, -1, 0],
[-1, -2, 16, -2, -1],
[0, -1, -2, -1, 0],
[0, 0, -1, 0, 0],
]
),
7: np.array(
[
[0, 0, 0, -1, 0, 0, 0],
[0, 0, -2, -3, -2, 0, 0],
[0, -2, -7, -10, -7, -2, 0],
[-1, -3, -10, 68, -10, -3, -1],
[0, -2, -7, -10, -7, -2, 0],
[0, 0, -2, -3, -2, 0, 0],
[0, 0, 0, -1, 0, 0, 0],
]
),
}
if ksize not in kernels:
msg = f"ksize must be in {tuple(kernels)}"
raise ValueError(msg)

# Apply the Laplacian kernel using convolution
return filter2D(
src, CV_64F, kernels[ksize], 0, borderType=BORDER_DEFAULT, anchor=(0, 0)
)


if __name__ == "__main__":
# read original image
img = imread(r"../image_data/lena.jpg")

# turn image in gray scale value
gray = cvtColor(img, COLOR_BGR2GRAY)

# Applying gaussian filter
blur_image = gaussian_filter(gray, 3, sigma=1)

# Apply multiple Kernel to detect edges
laplacian_image = my_laplacian(ksize=3, src=blur_image)

imshow("Original image", img)
imshow("Detected edges using laplacian filter", laplacian_image)

waitKey(0)