如何从正常图像生成HSL或HSI直方图?
我正在从事一个科学工作项目,需要获得一些图像标准. 为此,我需要一个代码,该代码从普通的.jpeg .png或.bmp Image生成3个直方图.第一个直方图其色调直方图,第二个是饱和直方图,第三个是光度或强度直方图. IM与HSL和HSI一起工作,因此第三直方图的光度或强度将是有用的.如果存在一个. ,我希望使用Java或C#实施. 有人知道是否有一个从图像中产生这些值的项目? 全部; 解决方案 我认为那应该是您正在寻找的
26 2024-04-26
编程技术问答社区
我怎样才能加快这个直方图类的速度?
这应该计算8位灰度图像的直方图.使用1024x770测试位图,CardeTime的最终为890ms.我该如何更快地进行此操作? 编辑:我应该提到,这实际上还没有计算直方图,它只会将值从位图中取出.所以我真的应该问,从8位灰度图像中检索所有像素值的最快方法是什么? public class Histogram { private static int[,] values; public Histogram(Bitmap b) { var sw = Stopwatch.StartNew(); values = new int[b.Width, b.Height]; for (int w = 0; w
14 2024-04-23
编程技术问答社区
C#: 寻求快速的数据架构,将像素添加到分区的HSB直方图上
在我的应用程序中,我使用快速的未托管代码从几个图像中读取RGB像素值,然后将其转换为HSB颜色.现在,我想使用以下分区构建HSB直方图: 色调:18个分区,从0 ... 360 的间隔为20 饱和度:3个分区,从0 ... 1 的间隔为0,33 亮度:3个分区,从0 ... 1 的间隔为0,33 因此,我的直方图总共有18*3*3 = 162个分区(垃圾箱),该分区由每个通道的较低间隔边界组成: bin1:[0,0,0] bin2:[0,0,0.33] bin3:[0,0,0.66] bin4:[0,0.33,0] bin5:[0,0.33,0.33] ... bin162:[340,0.66,0.66] 我实施了这种假装,每个垃圾箱本身都是HSB的颜色.因此,我计算了BIN间隔边界,从这些值创建了HSBColor实例,并将颜色(包裹在HSBHistogrambin类中)放入简单列表中. 在直方图中添加新的HSBColor时,我使用以下代码来确定
14 2024-04-23
编程技术问答社区
用C++标记图像中的兴趣点
我有一个像这样的位图映像 我的要求是创建一个GUI来加载图像并更改图像和算法上的对比度和其他事物,以使用C ++或C#.我的搜索我发现我可以使用图像的直方图查找所需区域.这些步骤. 获取直方图 搜索强度差 在行中搜索中断 有人可以建议我如何从这里开始. 注意: 此图像具有许多明亮的点,并且Blob算法并不成功. 任何其他建议,以检索矩形的正确坐标. 谢谢 解决方案 OpenCV应该起作用. 将您的输入图像转换为灰度. adaptiveThreshold将其转换为黑白 特征检测 拥有OPENCV功能检测器的完整列表;根据您要检测到的确切功能选择一个. 例如.看看其他解决方案 如果您的所有图片看起来都这样,在我看来,将银色区域分割并找到其中心似乎并不复杂.基本上,您需要在以下序列中应用这些算法: 我会建议使用OTSU自适应阈值算法二进制图像 应用标签(BLOB)算法 如果您对噪声有一些问题 如果您最终只有一个斑点(我猜最
10 2024-04-22
编程技术问答社区
我需要做一个直方图拉伸
我有一系列的位框架,需要进行直方图拉伸.我知道这与直方图均衡不同,最终结果是...问题是我绝对不知道在我得到直方图后该怎么办. 到目前为止,我的代码为直方图创建了一个数组,因此我知道每个值有多少像素.但是之后我不知道该怎么办. 这是我到目前为止的代码...现在它使直方图制成直方图,然后直方图均等...这不是我想要的...我只是想了解有关直方图的更多信息 [Cmdlet(VerbsData.ConvertTo, "HistoStretch")] public class HistoStretchCmdlet : PSCmdlet { private BitmapFrame[] bFrame, outFrame; private BitmapSource src; private double pixelsize; private byte[] pixels, outPixels; private byte MAX_VAL;
18 2024-04-20
编程技术问答社区
如何创建直方图
我想在使用EMGU的C#程序中创建直方图. Emgu在其中包含一个名为McVhistogram的类,但我不知道如何使用它. 解决方案 如果要使用EMGUCV,则应使用密集组织类. 我将向您展示基本用法: // Create a grayscale image Image img = new Image(400, 400); // Fill image with random values img.SetRandUniform(new MCvScalar(), new MCvScalar(255)); // Create and initialize histogram DenseHistogram hist = new DenseHistogram(256, new RangeF(0.0f, 255.0f)); // Histogram Computing hist.Calculate
8 2024-04-13
编程技术问答社区
在C#中简单生成整数数据的直方图
作为我正在构建的测试工作台的一部分,我正在寻找一个简单的类来计算整数值的直方图(算法为解决问题所需的迭代次数).答案应被称为这样: Histogram my_hist = new Histogram(); for( uint i = 0; i
6 2024-04-12
编程技术问答社区
对大数组或列表的4组直方图进行微观优化
我有一个特殊的问题.我将尝试将其描述为尽可能准确. 我正在做一个非常重要的"微观优化".一次运行几天的循环.因此,如果我能切断这个循环时间,则需要一半的时间. 10天只会减少5天等. 我现在拥有的循环是函数:" testBenchmark1". 我有4个索引,需要在这样的循环中增加.但是,从我注意到的那样,从列表中访问索引时,实际上需要额外的时间.如果还有另一个解决方案,我就是想知道的. indexes[n]++; //increase correct index 完成" TestBenchmark1"的完整代码,该代码为122 ms: void testbenchmark00() { Random random = new Random(); List indexers = new List(); for (int i = 0; i
22 2024-04-11
编程技术问答社区
我可以通过什么方式(使用stdio)打印垂直直方图?
我正在进行所有K&R练习,我终于能够打印水平直方图.看起来也很糟糕,但是我会让你判断它.我无法在其输入中打印单词长度的直方图. 如何修改程序来执行此操作? 问题:编写一个程序以打印长度的直方图,如果单词 在其输入中.用条形图绘制直方图很容易 水平的;垂直方向更具挑战性. 直方图 #include #define MAX 10 #define IN 1 #define OUT 0 int main() { int c, len, state; int nlength[MAX]; c = len = 0; state = 1; for(int i = 0; i
20 2024-04-10
编程技术问答社区
计算每个字母在一个字符串中出现的次数
我一直在玩一些旧的代码,并且遇到了一个函数,该函数是我前一段时间计算出每个字母字母出现在给定字符串中的次数.在我的初始功能中,我将循环循环26次,计算每个字母循环时出现的次数.但是,我知道那真的很低效率,所以我试图这样做: int *frequency_table(char *string) { int i; char c; int *freqCount = NULL; freqCount = mallocPtr(freqCount, 26, sizeof(int), "freqCount"); /* mallocs and checks for out of memory */ for (i = 0; string[i] != '\0'; i++) { c = string[i]; if (isalpha(c)) { isupper(c) ? freqCount[c - 65]++
20 2024-04-09
编程技术问答社区
如何在C语言中绘制柱状图
如何从2个数组中绘制C中的直方图? 解决方案 您可以使用此字符(■)来表示图中的计数.这是一个可以通过 打印的角色 printf("%c", (char)254u); 考虑一些随机float_arr和hist数组,该数组持有计数. 代码 // Function generating random data for (i = 0; i
26 2024-04-08
编程技术问答社区
在C语言中把PPM从RGB转换为HSL
我需要有关我的学术课程中RGB图像文件中直方图均衡的帮助. 我检查了有关直方图均衡的先前代码示例,但我没有发现有关此问题的任何线索.我从未练习过直方图均衡示例,即RGB图像. 图像是PPM文件.因此,我们需要将文件从RGB转换为YCBCR以及从RGB转换为HSI. 然后,我们需要在图像处于YCBCR和HSI格式时进行直方图均衡. 之后,我们需要再次将PPM文件转换为RGB格式.就是这样. *void write_image function is writing the data to the pnr.ppm* *void get_image_data function is getting the image that is mandrill1.ppm* 我们只需要指定代码: #include #include #include #include #include
16 2024-04-07
编程技术问答社区
寻找一种快速/高效的直方图算法(有预先指定的分值)。
我在MATLAB之外没有进行太多的编码,但是我需要将MATLAB代码导出到另一种语言,很可能C.我的MATLAB代码包含一个直方图函数Histc(histc(),它放置了我的输入数据(这是双重精确的,而不是整数),以形成直方图. 我敢肯定,我可以将几个嵌套循环拼凑起来以生成直方图功能,但是我需要此功能快速且灯,因为它将反复访问,并且经常访问. 要避免重新发明轮子,任何人都知道C语言是否具有可供使用的任何现有直方图功能,或者需要这样的人通常会自己创建它? 有人知道创建直方图的有效算法吗?伪代码很好. 预先感谢. 解决方案 GSL(GNU科学库)包含直方图实现. 这是文档:/software/gsl/manual/html_node/histograms.html . 这是一个示例:. 其他解决方案 "理想"直方图算法将取决于您期望捕获的范围.通常,任何直方图算法看起来都这样: const int NSAMPLES = whateve
10 2024-04-07
编程技术问答社区
如何在R中使用ggMarginal为直方图添加一个boxplot?
我想绘制具有密度曲线的直方图,然后在顶部边缘上方放置一个箱形图.我知道如何使用hist(),boxplot()和layout()函数或使用ggplot2和grid软件包的函数来执行此操作.但是,我正在寻找使用ggplot2和ggExtra软件包中的ggMarginal()函数的特定解决方案.让我们在提出问题之前模拟一些数据: library(ggplot2) library(ggExtra) set.seed(1234) vdat = data.frame(V1 = c(sample(1:10, 100, T), 99)) vname = colnames(vdat)[1] boxplot(vdat[[vname]], horizontal = T) 请注意,我将一个离群值99明确插入1到10的数字样本中.因此,当我绘制Boxplot时,应将99显示为异常值. 我可以轻松地使用ggplot2. 绘制直方图 p = ggplot(data=vdat, aes_strin
58 2024-04-03
编程技术问答社区
在Python中使用直方图和Bowxplot。
嗨,我想绘制一个直方图显示直方图的直方图,显示Q1,Q2和Q3以及离群值.示例电话在下面. (我正在使用Python和Pandas) 我已经使用matplotlib.pyplot检查了几个示例,但几乎没有一个很好的例子.而且我还想将直方图曲线显示在下图中. 我也尝试了seaborn,它为我提供了形状线和直方图,但没有找到与上面的Boxpot合并的方法. 任何人都可以帮助我这样做matplotlib.pyplot或使用pyplot 解决方案 import numpy as np import seaborn as sns import matplotlib.pyplot as plt sns.set(style="ticks") x = np.random.randn(100) f, (ax_box, ax_hist) = plt.subplots(2, sharex=True, gr
14 2024-04-03
编程技术问答社区
使用ggplot2的组合Boxplot和Histogram
我试图将直方图和箱形组合组合起来,以可视化连续变量.这是我到目前为止的代码 require(ggplot2) require(gridExtra) p1 = qplot(x = 1, y = mpg, data = mtcars, xlab = "", geom = 'boxplot') + coord_flip() p2 = qplot(x = mpg, data = mtcars, geom = 'histogram') grid.arrange(p2, p1, widths = c(1, 2)) 除了x轴的对齐外,它看起来不错.谁能告诉我如何对齐它们? 或者,如果某人使用ggplot2制作此图的更好方法,那也将不胜感激. 解决方案 您可以通过coord_cartesian()和align.plots. library(ggplot2) library(ggExtra) # from R-forge p1
14 2024-04-03
编程技术问答社区
使用ggplot2合并并完美对齐直方图和Bowxplot
自昨天以来,我正在阅读答案和网站,以便在一个图中组合和对齐histogram和a boxplot使用ggplot2> package生成的boxplot. 这个问题与其他问题有所不同,因为boxplot chart需要在height和aligned中减少到histogram的左外边缘. . 考虑以下数据集: my_df
16 2024-04-03
编程技术问答社区
openCV对三维矩阵/柱状图的高斯模糊/平滑处理
我有一个(3D)直方图,我喜欢在: 上使用高斯平滑 cv::MatND Hist; 在1D和2D情况下,我通过: 模糊了它 cv::GaussianBlur(Hist, Hist, cv::Size(1,3), 1.0);// 1D case cv::GaussianBlur(Hist, Hist, cv::Size(3,3), 1.0);// 2D case ,但我很难在3D情况下应用高斯模糊. 有人想知道如何尝试吗? 解决方案 尝试使用如下所示的可分离内核: http://www.programpramprognming-programprogingming-trogmprogramming-thechniques.com/2013/03/gaussian-blurring-using-sebarable.html
24 2024-04-01
编程技术问答社区
在Matlab中使用位移的RGB直方图
我正在尝试在MATLAB中创建Mozaic图像.该数据库主要由RGB图像组成,但还由一些灰度图像组成. 我需要计算直方图 - 就像在Wikipedia文章的示例中一样 - 对于RGB图像,并考虑使用MATLAB中的Bitshift操作员组合R,G和B通道. nbins = 4; nbits = 8; index = bitshift(bitshift(image(:,:,1), log2(nbins)-nbits), 2*log2(nbins)) + ... + bitshift(bitshift(image(:,:,2), log2(nbins)-nbits), log2(nbins)) + ... + bitshift(image(:,:,3), log2(nbins)-nbits) + 1; 索引现在是与 image 具有相同大小的矩阵,其索引与像素值相应的bin的索引. 我如何在此矩阵中总结所有唯一值的发生以
24 2024-03-31
编程技术问答社区