2016-07-12 3 views
0

파이썬에서 내 회선 알고리즘으로 연주하고 있었고, 난이 원래 배열에 따라 필터를 슬라이딩 그 안에 항목을 업데이트하는 동안, 결과는 매우 어두운 나온 것으로 나타났습니다 :컨볼 루션 결과를 저장하기 위해 완전히 새로운 배열을 만들어야합니까?

enter image description here

내가 만든 경우 반면 완전히 새로운 배열은 원본과 비슷한 수준으로 나왔습니다.

enter image description here

내 어리석은 질문 -이 알고리즘을 작성하는 후자의 올바른 방법 (나는 그것이 추측하고있어)인가? 무엇이 전 - 또는 오히려, 내가 또 다른 전체 배열을 초기화하고 메모리를 중얼 거릴 필요가 없기 때문에 오히려 원래의 배열에 결과를 저장하거나이 알고리즘을 쓸 수있는 방법입니다 ... ?

답변

4

두 번째 배열을 사용하여 결과를 저장해야합니다. 그렇지 않은 경우 이미 이미지에 있던 원래 픽셀 대신을 변경 한 픽셀에 대부분의 계산을 적용합니다. 첫 번째 예가 예상보다 많이 변경되는 이유입니다.

기술적으로 스레드를 사용하여 두 번째 배열없이 할 수 있습니다. 당신은 당신이 픽셀을 가지고있는만큼의 스레드를 가질 필요가 있습니다. 그런 다음 각 스레드는 하나의 픽셀을 계산하여 이미지에 다시 저장합니다. 그러나 두 번째 배열을 사용하는 것보다 훨씬 많은 메모리가 필요하므로 연산을 위해 여전히 필요한 픽셀을 수정하지 않도록 신중하게 동기화해야합니다. 또한 느려질 것입니다.