Superpixel多色调分色法
今天这篇博文的灵感来自于我的朋友、图像处理工具箱的开发者Alex Taylor写的一个例子。几年前,Alex使用工具箱算法来实现伪艺术的“分离”效果,就像这样:
imshow (“埃丁-角- 1000. png”)
我认为这项技术很酷,值得展示。我还注意到这个例子使用了几个图像处理工具箱的函数,这些函数在产品中出现的时间不长,包括:
所以我意识到这将是一个向你们介绍一些你们可能不知道的工具箱新成员的好机会。
Rgb2lab和lab2rgb
这两个函数
我在之前的几篇博客文章中提到过这些函数,包括"显示色域表面"而且“Out-of-gamut颜色。”
boundarymask
这个函数
I = imread(“rice.png”);bw = imbinalize (I,“自适应”);掩码=边界掩码(bw);subplot(1,2,1)原始图像的) subplot(1,2,2)“边界面具”)
imoverlay
这个函数
I_overlay = ioverlay (I,掩码,“黄色”);imshow (I_overlay)
在我写这个博客的第一年(2006年),我用这个名字写了自己的函数,并将它提交给了File Exchange。现在图像处理工具箱有了自己的版本,我可能很快就会从文件交换中删除我的版本。
superpixels
“超像素”只是一组具有相似颜色的连接像素。计算超像素已经在各种图像分析和计算机视觉任务中找到了固定的位置。图像处理工具箱功能
A = imread(“kobi.png”);L =超像素(A,1500);mask =边界掩码(L);B = imoverlay(A,掩码,“青色”);clf imshow (B)
Superpixel多色调分色法
由Alex实现的超像素分离方法首先使用
下面是它的工作原理。
A = imread(“eddins-horn.png”);imshow (A)标题(原始图像的)
接下来,计算和可视化超像素集群。
[L,N] = superpixels(A,1000);BW =边界掩码(L);imshow (imoverlay (BW,“青色”))
在下一步中,我想用簇颜色的平均值替换每个超像素簇中的像素。但我想计算L*a*b*空间的平均值,所以我从RGB转换为L*a*b*开始。
Alab = rgb2lab(A);
我将使用这个函数
pixel_idx = label2idx(L);
对于每一个
Aplab = Alab;Ln =数字(L);为k = 1:N idx = pixel_idx{k};Aplab(idx) = mean(Alab(idx));Aplab(idx+Ln) = mean(Alab(idx+Ln));Aplab(idx+2*Ln) = mean(Alab(idx+2*Ln));结束
最后,转换回RGB空间。
Ap = lab2rgb(Aplab);imshow(美联社)
评论
如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。