我有这段代码,我正尝试从Python转换为Javascript。它是非最大抑制功能。它试图删除浮点值的2D数组中局部最大值附近的最大值。由于它使用的是numpy函数,因此无法轻松转换为javascript。
def non_max_suppression(plain, window_size=3, threshold=NMS_Threshold):
under_threshold_indices = plain < threshold
plain[under_threshold_indices] = 0
return plain * (plain == maximum_filter(plain, footprint=np.ones((window_size, window_size))))
这是一个近似的转换,仍然使用Python。但是,结果不一样。它提供了大致相同的结果,但某些最大值受到抑制,应予以保留。
def non_max_suppression(plain, window_size=3, threshold=NMS_Threshold):
under_threshold_indices = plain < threshold
plain[under_threshold_indices] = 0
outter = np.zeros((46, 54))
for i in range(window_size, 41, window_size):
for j in range(window_size, 49, window_size):
maxVal = 0;
maxLoc = [-1,-1]
for k in range(i-window_size, i+window_size):
for h in range(j-window_size, j+window_size):
if(plain[k][h]>maxVal):
maxVal = plain[k][h]
maxLoc = [k,h]
if(maxVal>0):
outter[maxLoc[0]][maxLoc[1]]=maxVal
return outter
这很容易转换为Javascript。
function makeArray(w, h, val) {
var arr = [];
for(i = 0; i < w; i++) {
arr[i] = [];
for(j = 0; j < h; j++) {
arr[i][j] = val;
}
}
return arr;
}
non_max_suppression(plain, window_size=3, threshold=this.NMS_Threshold) {
var nmsImage = makeArray(plain.length, plain[0].length,0);
for(var i=0; i<(plain.length); i+=1){
for(var j=0; j<(plain[i].length); j+=1){
if(plain[i][j]<threshold) {
plain[i][j]=0;
}
}
}
for(var i=window_size; i<(plain.length-window_size); i+=window_size){
for(var j=window_size; j<(plain[i].length-window_size); j+=window_size){
var maxVal = 0;
var maxLoc = [-1,-1];
for(var k=i-3; k<i+3; k+=1){
for(var h=j-3; h<j+3; h+=1){
if((plain[k][h]>maxVal) && (plain[k][h]>=threshold)){
maxVal = plain[k][h];
maxLoc = [k,h];
}
//plain[k][h]=0;
}
}
if(maxVal>0) {
nmsImage[maxLoc[0]][maxLoc[1]] = maxVal;
}
}
}
return nmsImage;
}
关于如何纠正这一点的任何建议?
参考方案
我认为问题是,您没有在scipy.ndimage.maximum_filter的source code中指出一维的最大值:
"""Calculate a one-dimensional maximum filter along the given axis.
您需要分别沿着y,x和对角轴重新运行最大搜索:wikipedia non-max-suppression
Javascript-从当前网址中删除查询字符串 - javascript单击提交按钮后,我需要从网址中删除查询字符串值。我可以用jQuery做到这一点吗?当前网址:siteUrl/page.php?key=value 页面提交后:siteUrl/page.php 实际上,我已经从另一个带有查询字符串的页面着陆到当前页面。我需要在页面首次加载时查询字符串值以预填充一些详细信息。但是,一旦我提交了表格,我就需要删除查询字符串值。我已…
Javascript IF语句 - javascript嗨,我有这段代码可以正常工作,并将两个日历显示为一个日历。我还有一个php变量$login_session,其中包含登录电子邮件地址的用户。关于如何显示[email protected]日历的任何想法(伪代码)IF $login_session == "[email protected]…
如何根据手势滚动网页 - javascript如何使用pyhton / javascript使用手势向上/向下或向左/向右滚动页面。我尝试了很多找到解决方案,但无法解决。 参考方案 Javascript手势插件(JSHG)是一个很棒的插件,它使您可以通过现有网站或Web应用程序中的网络摄像头来支持用户的手势识别。您无需具有计算机视觉的任何背景即可使用此插件。当前,它提供了一组基本的手势,其中包括手的位置…
从一个脚本到另一个脚本的统一变量访问 - javascript所以我有一个统一的3D文本上的文本网格脚本,我希望它从具有OnMouseDown函数的多维数据集中访问一个变量,在该函数内部它会更改分数,并且我希望将该分数输出到文本。当我在CS中编写文本脚本时,多维数据集脚本是用JavaScript编写的。谁有想法? 参考方案 如果我误解了您的问题,请纠正我。选项1:C#代码在js代码之前进行编译,这意味着您无权从c#代码…
在文本字段中键入时显示预制建议列表 - javascript如标题所说我正在处理一个mysql项目,我希望该文本字段在键入它时向现有用户提供建议(管理员控制页以禁止用户..类似的东西)一个简单的例子来解释:当我输入文字时..我想给用户输入建议假设他正在输入颜色名称所以当他在其中输入b在他继续之前,会出现一个列表,向他提供我们预先设定的建议,例如:黑色棕色蓝色然后如果他输入l为bl该列表将是:黑色蓝色布拉布拉有什么建议…