對MATLAB中的圖像應用滑動窗口操作(如stdfilt(i, ones(5, 5))
)之後,我想將邊界像素(使用填充計算的像素)設置爲NaN
以將它們標記爲無意義。在這個例子中,我將最外面的兩行和列設置爲NaN
。給定一個M * M窗口,我怎樣才能將這個(M-1)/ 2像素寬的邊界設置爲特定值?如何在應用滑動窗口操作後設置邊界像素的值?
1
A
回答
0
首先找到NaN
在您的矩陣中。假設你的圖片名稱是A.
a = isnan(A);
這將是數字的位置,並創造1基質a
0那是NaN
位置。然後找到Nan
元件的位置:
for i=1:length(x)
A(x(i),y(i)) = V;
end
3
假設,r
是矩陣(的stdfilt
結果):
[x,y]=find(a==1);
然後用值V
作爲替換它們。以下是如何將NaN分配給邊界的示例。 一般來說,您需要指定正確的索引。
>> r = rand(4)
r =
0.8147 0.6324 0.9575 0.9572
0.9058 0.0975 0.9649 0.4854
0.1270 0.2785 0.1576 0.8003
0.9134 0.5469 0.9706 0.1419
>> r([1, end], :) = nan
r =
NaN NaN NaN NaN
0.9058 0.0975 0.9649 0.4854
0.1270 0.2785 0.1576 0.8003
NaN NaN NaN NaN
>> r(:, [1, end]) = nan
r =
NaN NaN NaN NaN
NaN 0.0975 0.9649 NaN
NaN 0.2785 0.1576 NaN
NaN NaN NaN NaN
更新:在一般情況下,由於圖像是一個矩陣,你的問題是「如何設置某些矩陣值?」。答案是:「使用矩陣的索引」。有很多方法可以實現它(例如,通過構建索引矩陣,邏輯掩碼或使用行/列座標)。決定使用哪種方法通常取決於該特定任務的操作速度。例如,如果您需要用NaN替換零,則使用邏輯掩碼的速度會更快:r(r == 0) = nan
,依此類推。
0
這將完成這項工作,但這似乎是圖像處理工具箱中的一種功能。
mask = logical(ones(size(i)));
width = (m - 1)/2;
mask(width + 1:size(i, 1) - width, width + 1:size(i, 2) - width) = 0;
i(mask) = NaN;
相關問題
- 1. 在Theano的3D滑動窗口操作?
- 2. 使用分層窗口創建平滑窗口邊界
- 3. jquery滑塊設置滑動後的值
- 4. 在wpf中移動無邊界窗口
- 5. Silverlight窗口邊界
- 6. CSS滑動邊界
- 7. WPF窗口拖動/移動邊界
- 8. 基於設置的像素邊距,使用窗口調整圖像大小?
- 9. 使用bin邊界的平滑值邊界:你在哪裏設置一個值位於下邊界和上邊界之間的值?
- 10. 設置元素滑動後的高度()
- 11. 可移動的WPF無邊界窗口
- 12. 更改窗口的邊界
- 13. 如何使QML窗口無邊界?
- 14. OpenCV如何平滑邊界
- 15. 錯誤值,如果設置了邊界
- 16. CEF 3無邊界窗口
- 17. 無邊界窗口monogame
- 18. ncurses.h確定窗口邊界
- 19. WPF窗口邊界問題
- 20. 帶滑動窗口元素的矩陣
- 21. 如何在pygame中設置邊界?
- 22. 如何在android中設置圓形圖像邊界的顏色?
- 23. 如何在MVC應用程序中設置Kendo地圖邊界?
- 24. html/css:將div邊界框設置爲窗口高度
- 25. 如何在wpf中設置動態窗口背景圖像
- 26. 如何設置像素高度然後自動設置
- 27. 在德爾福的無邊界窗體/窗口中平滑調整大小
- 28. 如何將操作命令設置爲窗口關閉事件?
- 29. 使用imageio.read設置像素後得到錯誤的像素值
- 30. 如何獲取邊界的邊界值?
我不問如何用某些東西替換NaN,我問如何用特定的值替換圖像的邊界(從假像素值計算stdfilt的像素)。 –