Python到Javascript-Numpy问题 - javascript

我有这段代码,我正尝试从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该列表将是:黑色蓝色布拉布拉有什么建议…