이진 이미지의 볼록 껍질을 어떻게 생성 할 수 있습니까?
img
아래 그림과 같이 이진 이미지 ( )가 있고 흰색 영역의 볼록 껍질을 생성하고 싶습니다.
사용을 시도했지만 ConvexHullMesh
배경이 원본 이미지에 맞도록 원하는 크기를 얻지 못했습니다.
cv = ComponentMeasurements[
FillingTransform[scleraRough1], {"ConvexVertices", "Mask"}];
cvScaled = Rescale@cv[[1, 2, 1]];
Rasterize@ConvexHullMesh[cvScaled]
원하는 볼록 껍질 (배경으로 둘러싸인 바이너리 마스크)을 생성하려면 어떻게해야합니까?
그리고 나는
답변
3 flinty
다음과 같이 바로이 작업을 수행 할 수 있습니다.
Image@MorphologicalComponents[img, Method -> "ConvexHull"]
이 답변보기 https://mathematica.stackexchange.com/a/189196/72682
조금 어색하지만 Inset
. 아래에 경계선을 표시했지만 얼굴을 원한다면 RegionBoundary
. 나는 또한 ImageValuePositions
픽셀 중심 오프셋이 아닌 0.5만큼 사용했습니다 PixelValuePositions
.
img = Import["https://i.stack.imgur.com/3ndPk.png"] // Binarize;
(* remove the border *)
img = ImageTake[img, {2, -2}, {2, -2}];
dims = ImageDimensions[img];
cvx = ConvexHullMesh[ImageValuePositions[img, 1]];
Graphics[{Inset[img, {0, 0}, {0, 0}, dims], Red, RegionBoundary[cvx]},
PlotRangePadding -> None, PlotRange -> Transpose@{{0, 0}, dims}]
이미지 마스크를 얻으려면 다음을 수행하십시오.
gr = Graphics[{Inset[img, {0, 0}, {0, 0}, dims], White, cvx},
PlotRangePadding -> None, PlotRange -> Transpose@{{0, 0}, dims}];
Image[gr, ImageSize -> ImageDimensions[img]]