在彩色图像上使用 canny
Using canny on colored image
我是图像处理和opencv的新手,但最近在研究边缘检测的想法,对此有疑问:
是否可以直接应用于彩色图像而不将其转换为灰度?这会影响结果吗?我试了一下(使用c++ opnencv函数)没有错误或问题,结果与我将图像更改为灰度后的结果不同。
我读到,对于彩色图像,我应该分别在每个通道上应用 canny,然后合并结果。好吧,假设每个通道有 3 个结果,我如何将它们组合在一起以获得最终结果?
处理灰度图像真的比处理彩色图像更快吗,因为后来我们有3个通道(逻辑上似乎是的,但没有参考比较每种方法的优缺点;所有我知道灰度速度更快,而对于图像分割,彩色图像可以提供更多信息)在边缘检测的概念中,使用彩色图像是否更好?
如果您接受python,那么您可以:
第二个问题:
-
- 使用
split
方法分离通道,将每个通道应用Canny
不同的阈值水平,然后使用merge
方法组合结果。
-
import cv2
img = cv2.imread("grl.jpg")
(B, G, R) = cv2.split(img)
B_cny = cv2.Canny(B, 50, 200)
G_cny = cv2.Canny(G, 50, 200)
R_cny = cv2.Canny(R, 50, 200)
img_cny = cv2.merge([B_cny, G_cny, R_cny])
结果:
可能的问题:为什么split
returnsB
、G
和R
?
答:Opencv读取的图片是(BGR)
格式,因此split
returns(B, G, R)
格式
你也可以直接应用到图片上(感谢@fmw42):
结果:
第三个问题:
是处理 gray-scale 图像比彩色图像快得多。
我们看到的图像有不同的颜色,但计算机看到的是一个值矩阵:
例如:
-
25 45 67 37 90 ..
56 .
46 .
34 .
13 .
.
.
矩阵中的每个单元格可以在 0-255 之间变化。 grey-scale 图像(矩阵)只有 1 个通道,彩色图像有 3 个通道(矩阵)
因此,您可以认为计算 single-matrix(灰色)比计算 3 矩阵(图像)
更快
我是图像处理和opencv的新手,但最近在研究边缘检测的想法,对此有疑问:
是否可以直接应用于彩色图像而不将其转换为灰度?这会影响结果吗?我试了一下(使用c++ opnencv函数)没有错误或问题,结果与我将图像更改为灰度后的结果不同。
我读到,对于彩色图像,我应该分别在每个通道上应用 canny,然后合并结果。好吧,假设每个通道有 3 个结果,我如何将它们组合在一起以获得最终结果?
处理灰度图像真的比处理彩色图像更快吗,因为后来我们有3个通道(逻辑上似乎是的,但没有参考比较每种方法的优缺点;所有我知道灰度速度更快,而对于图像分割,彩色图像可以提供更多信息)在边缘检测的概念中,使用彩色图像是否更好?
如果您接受python,那么您可以:
第二个问题:
-
- 使用
split
方法分离通道,将每个通道应用Canny
不同的阈值水平,然后使用merge
方法组合结果。
- 使用
-
import cv2 img = cv2.imread("grl.jpg") (B, G, R) = cv2.split(img) B_cny = cv2.Canny(B, 50, 200) G_cny = cv2.Canny(G, 50, 200) R_cny = cv2.Canny(R, 50, 200) img_cny = cv2.merge([B_cny, G_cny, R_cny])
结果:
可能的问题:为什么
split
returnsB
、G
和R
?答:Opencv读取的图片是
(BGR)
格式,因此split
returns(B, G, R)
格式你也可以直接应用到图片上(感谢@fmw42):
结果:
第三个问题:
是处理 gray-scale 图像比彩色图像快得多。
我们看到的图像有不同的颜色,但计算机看到的是一个值矩阵:
例如:
-
25 45 67 37 90 .. 56 . 46 . 34 . 13 . . .
矩阵中的每个单元格可以在 0-255 之间变化。 grey-scale 图像(矩阵)只有 1 个通道,彩色图像有 3 个通道(矩阵)
因此,您可以认为计算 single-matrix(灰色)比计算 3 矩阵(图像)
更快
-