在拍攝脊柱或胸片時,經常會遇到因設備高度不夠需要分段拍攝的情況,
對于影像科診斷查閱影像時希望將分段影像合并成一張影像,有助于更直觀的觀察病灶,
以下圖為例的兩個分段影像:
? ? ?
我們使用OpenCVSharp中的Stitcher類的Stitch方法,導入兩張圖像并拼接:
?但結果卻失敗了,返回錯誤結果:ERR_NEED_MORE_IMGS,是由于醫(yī)學影像的特征點匹配不夠,導致無法確定對接點。
一幅圖中總存在著一些獨特的像素點,這些點我們可以認為就是這幅圖的特征,即為特征點
獲取一幅圖中存在的一些獨特的像素點,需要解決兩個問題:
- 解決尺度不變性問題,不同大小的圖片獲取到的特征是一樣的
- 提取到的特征點要穩(wěn)定,能被精確定位?
?
可參考本系列文章:C#處理醫(yī)學影像(三):基于漫水邊界自動選取病灶范圍的實現思路
?文章來源地址http://www.zghlxwxcb.cn/news/detail-434138.html
根據算法原理得到如下結果:
?文章來源:http://www.zghlxwxcb.cn/news/detail-434138.html
Sobel算子:
根據算法原理得到如下結果:
?
其中直觀區(qū)別是canny算子計算的結果清晰,但不連續(xù),容易受噪點影響,而sobel算子線條相對柔和,連續(xù)性強。
?
⑤背景降噪
進行一次手動背景降噪,使得展現的無用邊緣更少,結果更清晰:
?
經過上述的一系列處理步驟后我們再次合并拼接:
Mat srcImg1 = imgList1[0]; Mat srcImg2 = imgList1[1]; Mat[] images = new Mat[] { srcImg1, srcImg2}; Stitcher stitcher = Stitcher.Create(Stitcher.Mode.Panorama); Mat pano = new Mat(); var status = stitcher.Stitch(images, pano); if (status != Stitcher.Status.OK) { ShowMsg.Box("拼接異常(" + status.ToString() + "),請重試。", BoxType.Msg, 120, this); return; }
得到了正確的結果:
?
?
到了這里,關于C#處理醫(yī)學影像(四):基于Stitcher算法拼接人體全景脊柱骨骼影像的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!