How to soften the boundaries within a matrix

2 次查看(过去 30 天)
Hi
I have a matrix M, size N1xN1, which only has positive integers, and is delimited by zones, as seen in the following picture created using image(M) (I changed the colormap and the axes, but that is not relevant for this question)
What I would like to know if there is a way to soften the boundaries between each area, i.e., that the curves do not seem discretized, but interpolated.
Thanks in advnace for any help

回答(1 个)

Image Analyst
Image Analyst 2022-2-21
You can blur the matrix and rediscretize it.
windowWidth = 9;
kernel = ones(windowWidth) / windowWidth^2;
blurredImage = conv2(M, kernel, 'same');
% Now call discretize to quantize into the levels you had.
  7 个评论
Image Analyst
Image Analyst 2022-2-21
Again, attach M in a .mat file with the paperclip icon.
save('answers.mat', 'M');
Make it easy for me to help you. I'll check back in a couple hours.
In the meantime I'm attaching a demo where you can get the boundaries with bwboundary() and then smooth the boundary with a Savitzky-Golay filter.
Andres Salomon Fielbaum Schnitzler
Thanks Image Analyst. It was late in my time zone, so I did not connect back yesterday. I am now attaching the 'answers.mat' file, and also the code to create the figure just in case it helps.
Where did you attach the mentioned demo?

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Orange 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by