首页 > 编程语言 > 详细

Python: scikit-image 彩色图像滤波

时间:2015-12-12 12:36:46      阅读:400      评论:0      收藏:0      [点我收藏+]

一般的滤波器都是针对灰度图像的,scikit-image 库提供了针对彩色图像滤波的decorator:adapt_rgb,adapt_rgb 提供两种形式的滤波,一种是对rgb三个通道分别进行处理,另外一种方式是将rgb转为hsv颜色模型,然后针对v通道进行处理,最后再转回rgb颜色模型。

针对模式一,称为 each_channel

@adapt_rgb(each_channel)
def sobel_each(image):
    return filters.sobel(image)

模式二称为 hsv_value

@adapt_rgb(hsv_value)
def sobel_hsv(image):
    return filters.sobel(image)

利用上述两种模式,可以对彩色图像滤波,下面是完整的用例代码;

from skimage import data
from skimage.exposure import rescale_intensity
import matplotlib.pyplot as plt

from skimage.color.adapt_rgb import adapt_rgb, each_channel, hsv_value
from skimage import filters


@adapt_rgb(each_channel)
def sobel_each(image):
    return filters.sobel(image)


@adapt_rgb(hsv_value)
def sobel_hsv(image):
    return filters.sobel(image)

image = data.astronaut()

# display the original image
plt.imshow(image)

fig = plt.figure(figsize=(16, 9))
ax_each = fig.add_subplot(121, adjustable=‘box-forced‘)
ax_hsv = fig.add_subplot(122, sharex=ax_each, sharey=ax_each, adjustable=‘box-forced‘)

# We use 1 - sobel_each(image)
# but this will not work if image is not normalized
ax_each.imshow(rescale_intensity(1 - sobel_each(image)))
ax_each.set_xticks([]), ax_each.set_yticks([])
ax_each.set_title("Sobel filter computed\n on individual RGB channels")

# We use 1 - sobel_hsv(image) but this will not work if image is not normalized
ax_hsv.imshow(rescale_intensity(1 - sobel_hsv(image)))
ax_hsv.set_xticks([]), ax_hsv.set_yticks([])
ax_hsv.set_title("Sobel filter computed\n on Value converted image (HSV)")

plt.show()

参考来源: http://scikit-image.org/docs/dev/auto_examples/

原图:

技术分享

效果图:

技术分享

Python: scikit-image 彩色图像滤波

原文:http://blog.csdn.net/matrix_space/article/details/49781309

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!