我希望您的建议是为什么代码可能会变得无法响应以及如何修复它。
我使用Accord.NET来比较图像。我的项目的第一阶段是比较两个图像,一个观察图像和一个模型图像,并确定它们有多相似;第二,是将观察到的图像与我的整个数据库进行比较,以根据模型的分类方式确定观察到的图像最有可能是什么。现在我专注于第一个。我最初尝试使用ExhaustiveTemplateMatching.ProcessImage()但它并不适合我的需要。现在,我正在使用SURF。这是我的代码:
+-------------+----------------+-----------------+-------------+------------+
| Board_Name | Method | Source | TicketCount | Percentage |
+-------------+----------------+-----------------+-------------+------------+
| IT Services | NULL | NULL | 73 | 0.700000 |
| IT Services | Call | CallByReception | 4303 | 43.300000 |
| IT Services | Call | CallBySupport | 2626 | 37.900000 |
| IT Services | Chat | Chat | 8 | 0.100000 |
| IT Services | EmailConnector | EmailConnector | 2047 | 20.600000 |
| IT Services | Internal | Internal | 51 | 0.500000 |
| IT Services | Portal | Portal | 829 | 8.300000 |
+-------------+----------------+-----------------+-------------+------------+
到目前为止,我可以获得积分列表,但是当匹配代码时似乎没有响应。
我在用户发布位图后从ASP.NET网页调用上面的代码。以下是代码,如果有帮助的话:
public class ProcessImage
{
public static void Similarity(System.IO.Stream model, System.IO.Stream observed,
out float similPercent)
{
Bitmap bitModel = new Bitmap(model);
Bitmap bitObserved = new Bitmap(observed);
// For method Difference, see http://www.aforgenet.com/framework/docs/html/673023f7-799a-2ef6-7933-31ef09974dde.htm
// Inspiration for this process: https://www.youtube.com/watch?v=YHT46f2244E
// Greyscale class http://www.aforgenet.com/framework/docs/html/d7196dc6-8176-4344-a505-e7ade35c1741.htm
// Convert model and observed to greyscale
Grayscale filter = new Grayscale(0.2125, 0.7154, 0.0721);
// apply the filter to the model
Bitmap greyModel = filter.Apply(bitModel);
// Apply the filter to the observed image
Bitmap greyObserved = filter.Apply(bitObserved);
int modelPoints = 0, matchingPoints = 0;
/*
* This doesn't work. Images can have different sizes
// For an example, https://thecsharper.com/?p=94
// Match
var tm = new ExhaustiveTemplateMatching(similarityThreshold);
// Process the images
var results = tm.ProcessImage(greyModel, greyObserved);
*/
using (SpeededUpRobustFeaturesDetector detector = new SpeededUpRobustFeaturesDetector())
{
List<SpeededUpRobustFeaturePoint> surfModel = detector.ProcessImage(greyModel);
modelPoints = surfModel.Count();
List<SpeededUpRobustFeaturePoint> surfObserved = detector.ProcessImage(greyObserved);
KNearestNeighborMatching matcher = new KNearestNeighborMatching(5);
var results = matcher.Match(surfModel, surfObserved);
matchingPoints = results.Length;
}
// Determine if they represent the same points
// Obtain the pairs of associated points, we determine the homography matching all these pairs
// Compare the results, 0 indicates no match so return false
if (matchingPoints <= 0)
{
similPercent = 0.0f;
}
similPercent = (matchingPoints * 100) / modelPoints;
}
}
页面本身相当简单,隐藏字段,文件类型输入和提交。
答案 0 :(得分:2)
问题是我的电脑。经过一段时间处理后,计算结束。
谢谢,
答案 1 :(得分:0)
要让KNearestNeighborMatching
做出决定,必须放置
Accord.Imaging
和Accord.Vision
。