What sort of a filter/method can be applied to smoothen sharp peaks on a surface?

7 ビュー (過去 30 日間)
Jithin S
Jithin S 2019 年 8 月 2 日
回答済み: Abdullah 2023 年 3 月 8 日
This is a surface I simulated via coding. The surf plot shows sharp peaks.
ABAQUS_Surface texture_10,20,50.jpg
I have the data as a matrix Z(101,101).
However, ideally the surface should look smooth as shown in figure below. What sort of a filter can I apply?
The sharp peaks needs to be smoothen so that it can resemble the surface given below.
Measured_Surface texture_10,20,50.jpg

回答 (2 件)

David K.
David K. 2019 年 8 月 2 日
In general, if you want to smooth out peaks you want to get rid of the high frequency content, aka a low pass filter. The easiest lpf is a moving average filter. I think this should work for your implementation.
window = 9; % Increase to smooth more, decrease to smooth less
H = ones(window)./(window^2); % Create the window and divide so that it is an average and not just a sum
filteredZ = filter2(H,Z);
surf(filteredZ)
Check out the filter2 documentation to get a better idea on what it is doing. Hope this helps
  1 件のコメント
Katherine Zheng
Katherine Zheng 2022 年 11 月 1 日
Hi @David K., Thanks for you method. But your code has weird padding at edge of the surface. How can I eliminate this effect?

サインインしてコメントする。


Abdullah
Abdullah 2023 年 3 月 8 日
did you find a way to do this?

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by