我可以为图像指定超像素及其属性。
public class TickersRoot
{
public Dictionary<string, Ticker> Tickers { get; set; }
}
public class Ticker
{
public string Symbol { get; set; }
public long Timestamp { get; set; }
public DateTime Datetime { get; set; }
public double High { get; set; }
public double Low { get; set; }
public double Bid { get; set; }
public double Ask { get; set; }
public double Vwap { get; set; }
public double Open { get; set; }
public double Close { get; set; }
public double Last { get; set; }
public double BaseVolume { get; set; }
public double QuoteVolume { get; set; }
public Info Info { get; set; }
}
public class Info
{
public List<string> a { get; set; }
public List<string> b { get; set; }
public List<string> c { get; set; }
public List<string> v { get; set; }
public List<string> p { get; set; }
public List<int> t { get; set; }
public List<string> l { get; set; }
public List<string> h { get; set; }
public string o { get; set; }
}
我知道每个超像素的平均强度值可以指定如下:
L = superpixels(A, 200);
K=regionprops(L, 'PixelIdxList');
问题是如何指定超像素内所有像素的值?
答案 0 :(得分:1)
获取每个标签内所有像素值的列表的语法为K = regionprops(L, A, 'PixelValues')
。但这仅适用于灰度值A
。
最简单的解决方案是遍历通道,并为每个通道调用上述函数:
A = imread('~/tmp/boat.tiff'); % whatever RGB image
L = superpixels(A, 200);
n = size(A,3); % number of channels, typically 3
K = cell(max(L(:)),n);
for ii=1:n
tmp = regionprops(L, A(:,:,ii), 'PixelValues');
K(:,ii) = {tmp.PixelValues};
end
我们现在有了一个单元格数组K
,其中包含每个标记的像素的值:K{lab,1}
是第一个通道的标记为lab
的像素的值的集合。>
以下代码将每个像素的成分整理到单个数组中:
K2 = cell(size(K,1),1);
for ii=1:numel(K2)
K2{ii} = [K{ii,:}];
end
现在K2
包含RGB数据数组:K{lab}
是一个Nx3矩阵,具有标记为lab
的N个像素中每个像素的RGB值。