subjunctive는 하나의 문법으로써 제안을 나타내는 동사들과 관련된 조금 독특한 문법이다. 이와 관련된 동사는 suggest, demand, insist, propose, recommend가 있다. 

아래 예문을 보면 희안하게도 he 다음에 has가 아니라 have가 왔다. 하지만 이 문장이 맞다고 한다. 


ex) I insisted he have dinner with us. (미국식 표현) 나는 그가 우리와 함께 식사를 해야한다고 주장했다.


이 문장은 미국식 영어라고 한다. 영국식 영어로 동일한 뜻을 가진 문장으로 바꾸면, 아래와 같다.


ex) I insisted he should have dinner with us. (영국식 표현)


그러니까 원래는 should가 있는 문장인데 생략되고 동사원형이 그대로 쓰인 것이다. 왜 헷갈리게 이런 문법을 만들어놓았을까? 영어시험에 문법 문제로 나오면 이게 뭐지 하고 틀렸다고 체크할 것 같다. 암튼 미국사람이 그렇게 했으니 받아들일 수 밖에.. 하나의 예만 더 살펴보자. 


ex) The doctor recommended that I should not go to work for two days. (영국식 표현) 의사가 나 이틀동안 일하지 말아야 한다고 추천했어. 


ex) The doctor recommended that I not go to work for two days. (미국식 표현)


역시 미국식 표현으로는 should가 생략되었기 때문에 not go 라는 다소 이상한 표현이 가능해진 것이다. 



<참고 자료>

[1] Raymond Murphy, Cambridge, Grammar in use intermediate, p. 64-65.

[2] http://theuranus.tistory.com/3183 => 마속님께서 subjunctive에 대해서 잘 설명해주셨다.  

길버트 스트랭 교수님의 강의를 들으면서 선형대수학을 공부하고 있다. 고유치와 고유벡터가 선형대수학 후반부의 핵심적인 내용이라고 하니 한번 정리해보려고 한다. 항상 느끼는 것이지만 그냥 단순히 공식을 알고 고유값, 고유벡터를 구할 수 있다고 해서 진짜로 고유치, 고유벡터를 아는 것은 아니다. 제대로 이해해야지만 기억에도 남고 활용할 수 있는 것 같다. 수학 과외를 하면서 느끼는 거지만 공식만 알고 이 공식이 왜 생겼고 이 공식이 어떤 의미를 갖는지를 알지 못하면 조금만 응용되어도 문제를 풀지 못하는 것과 마찬가지다. 



고유값과 고유벡터란?


고유값, 고유벡터에 대한 수학적인 의미는 다음과 같다. 어떤 정방 행렬 A가 있을 때, A에 A의 고유벡터인 를 곱해준 것은 고유벡터 에 고유값 를 곱해준 것과 같다. 


...(1: 고유값 방정식)


A의 고유벡터에 행렬 A를 곱해준 것이 고유벡터 에 일개 상수인 고유값 를 곱해준 것과 같다는 것이다. 원래 어떤 벡터에 행렬을 곱해주면 크기와 방향이 모두 바뀌는데, 만약 그 벡터가 행렬의 고유벡터라면 방향이 바뀌지 않는다 [3]. 그림 1을 보면 그 의미를 좀 더 명확히 알 수 있다. 벡터 에 행렬 A를 곱해줄 때 대부분의 경우에는 방향과 크기가 모두 바뀐다. 그러나 가 고유벡터인 경우에는 곱해준 결과인 Ax가 x의 상수배이다. 이 상수배를 고유값이라고 한다.  


그림 1. 고유값과 고유벡터에 대한 설명


고유값과 고유벡터를 구하기 위해서는 먼저 고유값을 구한 다음에, 그에 해당하는 고유벡터들을 각각 구한다. 식1에서 우변에 있는 항을 좌변으로 옮기면 아래와 같이 쓸 수 있다.


...(2)


여기서 만약 가 0 벡터라면 의 값에 상관없이 좌변이 0이 된다. 우리는 0 벡터가 아닌 고유벡터가 필요하다. 벡터 nullspace에 있는 것이라면 좌변이 0이 된다. nullspace에 0이 아닌 벡터가 존재하려면 가 full rank(m=n=r)가 아닌 singular 행렬이어야 한다. singular라면 행렬식 값은 0이다. 따라서, 


...(3: 특성 방정식, characteristic equation)


이다. 식 3을 만족시키는 들이 행렬 A의 고유값들이 된다. 


만약 



의 고유값들을 구한다면, 



즉, -1과 2가 고유값들이 된다. 


그러면 이제 고유벡터들은 어떻게 구하는지 살펴보자.

먼저 식 2에 각각의 고유값들을 대입한다. 을 대입하면,



이 되고, 이 식을 만족시키는 고유벡터 를 찾으면 



이다. 마찬가지로 를 대입하고 고유벡터를 찾으면 



와 같다. 여기서 흥미로운 것은 고유값들을 모두 합한 것은 행렬의 대각위치에 있는 값들을 더한 것과 같고, 고유값들을 모두 곱한 것은 행렬식의 값과 같다는 사실이다.


...(4)

...(5)


따라서, 



가 된다. 





▶ 역행렬의 고유값과 고유벡터


행렬 A의 고유값과 고유벡터를 안다면, 역행렬 의 고유값과 고유벡터는 상당히 간단히 알 수 있다. 고유값들은 바로 A의 고유값들의 역수와 같고 고유벡터들은 동일하다. (이거 몰라서 문제 틀렸었음..ㅜ) 


n x n 행렬 A의 고유값: 

n x n 행렬 A의 역행렬인 의 고유값: 



위에서 행렬 A의 고유값들과 고유벡터들은  



이었다. 그러면 의 고유값은 역수인 -1과 1/2가 되고, 고유벡터들은 동일할 것이다. 정말로 그런지 확인해보자. 먼저 를 구하면,



가 되고, 을 만족시키는 들을 찾으면, 



로 실제로 A의 고유값들의 역수이다. 고유벡터들도 구해보면,


 


로 A의 고유벡터와 동일한 것을 확인할 수 있다. 



▶ 글을 마무리 하며..


최근에 고유값을 활용해서 이미지의 지각 품질을 평가를 하는 것에 대한 논문을 썼는데, 잘 통과되면 좋겠다. 이처럼 고유값은 정말 활용범위가 크므로 잘 알아두자. 
 

끝까지 읽으시느라 수고하셨습니다! 질문이 있으시거나, 잘못된 내용이 있다면 꼭 댓글 남겨주세요. :D 오늘도 홧팅하십쇼~! 

 



<참고 자료>

[1] Gilbert Strang, Linear algebra and its applications, 4판, p. 233-240

[2] http://darkpgmr.tistory.com/105 => 고유값과 고유벡터에 대한 다크프로그래머님 설명.

[3] http://blog.naver.com/PostView.nhn?blogId=mykepzzang&logNo=220693383807 => 고유값과 고유벡터에 대해 매우 직관적인 설명을 해주셨다. 


1. should'~하는 것이 좋다, ~하는 것이 옳은 일이다, ~해야 한다'의 뜻을 갖는다. 

ex) The government should do more to reduce crime. 정부는 범죄를 줄이기 위해 더 노력해야 한다. 

ex) You look tired. You should go to bed. 너 피곤해 보여. 자러 가는 게 좋겠어. 

should는 무언가 옳지 않을 때, 기대한 것과 다를 때도 사용한다.

ex) I wonder where Liz is. She should be here by now. 난 리즈가 어딨는지 궁금해. 걔는 지금 여기에 있어야 해. (기대대로라면 여기 있어야 하는데 없다.) 

또한 should는 무언가 일어나길 기대한 것을 말할 때 사용한다.

ex) She's been studying hard for the exam, so she should pass. 걔는 시험 공부를 열심히 해왔으니 시험에 통과해야 해 (통과할 것이 기대됨). 


2. must나 have to만큼 강한 의미는 아니다. 

ex) You should apologize. 너가 사과하는 것이 옳은 일이야.

ex) You must apologize. 너는 사과해야해. (다른 대안이 없음)


3. should have p.p과거에 하지 않았지만 했어야 했던 일을 말할 때 사용한다. 반대로 shouldn't have p.p과거에 무언가를 했지만 하지 말았어야 했던 것을 말할 때 사용한다. 

ex) You missed a great party last night. You should have come. Why didn't you? 너 지난 밤에 엄청난 파티를 놓쳤어. 너 왔어야 했어. 왜 안 왔어?

ex) I feel sick. I shouldn't have eaten so much. 나 몸이 좀 안 좋아. 너무 많이 먹지는 않았어야 했어. 


4. ought to는 should 대신에 사용가능하다. 

ex) Do you think I ought to apply for this job? 너는 내가 이 직장에 지원하는 것이 좋다고 생각해? 



<참고 자료>

[1] Raymond Murphy, Cambridge, Grammar in use intermediate, p. 62-63. 

#1 初见

教勋:

2008年,她上了大学。

我们俩,虽然不一样的大学,

但是参加一样的团契。

第一次看到她的时候,

我对她有比较深刻的影响,

对我来说她是一个开朗大方的人。


喜:

大一的时候,对我来说所有的事情都很新鲜,

我在女子大学上学,所以必须参加跨校团契。

在那儿,我第一次看见他。

我的记忆里,他莞尔一笑过来欢迎我,

给我友好的感觉。


     



#2 朋友

教勋:

我觉得她是一个很受欢迎的人。

她的周围总是有好多的男生。

我跟她一起做的活动比较多,

所以比以前更亲密,慢慢我对她有了感情,

但我没有勇气,因为感觉有很多的对手。

我是一个胆小鬼。

虽然我也试着表达我的心,

但是她完全没有感觉到。

所以我们俩只做了好朋友,

大概7年的时间。。。



喜:

事实证明我的感觉没错,

他真的是一个友好的人。

他好像是不能说“NO”的人。

所以多亏了他这样的性格,

我得到了各种各样的帮助。

他的朋友兼我大学的学姐,对我说

“他很好,但如果只有我跟他两个人的话,

有一点点尴尬”

她们觉得我很不一样。

因为我跟他一起的时候从来没感到尴尬。

他是一个好朋友,也是一个好前辈。





#3 告白

教勋:

我等了很长时间。。。哈哈

后来想到以后我可能不会再遇到像她一样好的人。

所以我这样的胆小鬼,决定放开胆子。

那时候我觉得自己充满了自信。。

感觉只要我跟她告白我的心,

她就一定会接受我。

但是我告白以后她的反应不是这样。

她说,她需要考虑3个月!!

我有些心慌了。

我的朋友们说的话也让我很沮丧,

他们说你们俩不行,她只是说了客套话。

但不管怎么样,我只能等她的回答。

等了漫长的时间以后,她还是不能决定。

那时候,我再次强烈的表白我的心。

她终于开了心门接受了我的告白。


喜:

大四的时候,我一边准备毕业,

一边考虑我做什么。

有一天,我收到了一条短信,是他发给我的。

其实,我已经感觉到了,但我假装不知道。

他告白的那天,我还记得他紧张的样子。

我很吃惊,因为好像看到不一样的他的感觉。

本来我不想收到他的心,

但是他的态度让我很感动。

他真诚的表白了他的心。

但是当时我有好多的事儿,

还需要考虑很多将来的事情,

心里没有余力。

所以我跟他说,给我考虑的时间。

其实3个月太过分了。。。

3个月过了以后,我们再次见面了。

我看到他的时候,感觉跟他一起的时间很舒服。

他的态度总是让我感到很温和,亲切,

也让我确信了就是他。

终于我开了心门,接受了他。





#4 异地恋

教勋: 

开始谈恋爱1年以后,我决定去中国读研究生。

这是开始谈恋爱之前已经打算的,

所以我们已经预想了。

但还是难受。

有的时候跟她吵架的话,我什么都不能集中。

所以我不想跟她吵架。

但是又吵架,又和好,又吵架,又和好。。。

这可能就是又爱又恨的感情吧。

但是,如果我要吵架的话,还是想跟她吵架,

这样的心让我决定了要跟她结婚。

我已经对她求婚了,

这样的求婚让她看起来觉得不娴熟却很可爱。

还有我们见了双方父母,

办婚礼的日子也很快就到了。



喜: 

异地恋!

我很看重一起过的时间。

所以这段时间对我来说很痛苦。

虽然我们每天都打电话,

但我却不满意,因为看不到他的脸。

我发现了我里面连我自己也不知道的地方。

通过这段时间,我们看到了彼此的丑陋,

内心最真实的一面。

但是他了解我之后,仍然爱我这样的不好的样子。

通过这段时间,我更加确信要和在他一起。

而且我已经收到了求婚,

所以在决定结婚之后觉得我要打起精神准备婚礼啦,

D-20。。。

啊,减肥怎么办呢?





#5 期待结婚

教勋: 

我还是孩子一样,

所以还没感觉到要成为一个丈夫,爸爸是怎样的。

心里又惧怕,又激动。

但是我期待可以建立最重要的共同体,就是家庭,

这是多么荣耀的事情!

很感恩神让我这样软弱的人建立家庭。

我会在神里面爱她,和我们未来的孩子。

我希望我们的家庭成为世上的灯,可以照亮别的人。

啊,还有我真的想在家里吃饭。


喜:

最期待的事,可以一起过每天的生活。

到哪儿都可以一起,每顿饭面对面坐着一起吃,

可以共享每天的生活,这是我最期待的事。

虽然想要过每天都可以让我心跳的日子,

但更希望两个人一起牵手每一个平凡但充满喜乐的日子。

我期待跟他一起过剩下的所有的日子,

建立神所喜悦的家庭。





#6 跟对方想说: 


教勋:

喜呀,以后我研究的唯一主题就是你哦!


喜:

教勋,我们现在也很亲密,

但以后更更更更亲密吧:)





#7 亲爱的朋友们

教勋, 喜: 

我们终于结婚啦!

谢谢你们的祝福。

我们将会在韩国办婚礼。

所以真的抱歉不能邀请你们。

以后有机会的话,想要和你们一起见面!


 

 





  1. 최화 2017.10.29 21:53 신고

    祝你们 永远幸福 快乐! ^^

depth of focus와 depth of field에 대해 간략히 정리해보려고 한다. [2], [3] 글이 워낙 탁월하기 때문에 꼭 읽어보시길 추천한다. 


depth of focus는 한글로 초점 심도라고 부르고, depth of field피사계 심도라고 한다. 둘 다 사진에서 이미지가 선명하게 보이는 범위와 관련이 있다. 즉, 사진에서 초점이 맞아서 선명하다고 간주할 수 있는 영역이다. 차이가 있다면 초점 심도는 이미지 쪽, 즉 사진기 내에서의 범위고, 피사계 심도는 피사체(사진이 찍히는 물체) 쪽에서의 범위다. 아래 그림 1을 참고하자. 파란 타원은 렌즈를 의미한다. 렌즈를 기준으로 왼쪽은 피사체 쪽이고, 오른쪽은 이미지 쪽이다. 


그림 1. 초점 심도와 피사계 심도를 설명하는 그림. 그림 출처 [3]




<참고 자료>

[1] https://en.m.wikipedia.org/wiki/Depth_of_focus => 위키피디아 depth of focus

[2] http://fantasy297.tistory.com/9 => 피사계심도에 관한 이분 글 읽어볼만함.

[3] http://blog.envision.co.kr/32 => 피사계심도에 관해서는 이분 글도 좋음.

영상처리, 컴퓨터 비전을 연구하면서 느끼는 것은 하나님이 우리의 눈과 뇌를 얼마나 놀랍게 만드셨는가이다. 사람이 눈으로 보고 인식하고 판단하는 것을 상당히 발전된 카메라와 컴퓨터로 모방해보려고 하지만 사실 여전히 많이 미약하다. 


실례로 사람이 어떤 장면을 보고 그 안에 있는 물체들이 나로부터 얼마나 떨어져 있는지 예측하는 것은 너무나 자연스럽고도 쉽지만, 그 과정을 스테레오 매칭을 통해 모방하는 것은 꽤 복잡하고 부정확하다.  


또한 우리는 에어컨을 보고 에어컨임을, 노트북을 보고 노트북임을, 꽃을 보고 꽃임을, 사람을 보고 사람임을 바로 알 수 있지만, 그 작업을 컴퓨터로 대체하려면 딥러닝 기술과 수만장의 이미지를 이용해서 인식 모델을 훈련시켜야지만 매우 국한적으로 물체를 인식해낼 수 있다. 


그리고 공부하는 사람으로써 뇌에 지식이 보존되게 해놓으신 것만 생각해도 너무나 놀랍다. 하루 아침에 이 머리 속에 있는 것이 사라진다고 생각해봐라. 얼마나 끔찍한가. 30년 동안 배우고 학습해 온 것이 없어진다고 생각해봐라. 얼마나 아까운가. 우리에게 엄청난 기억력을 허락하신 것 또한 하나님의 은혜다. 아침에 일어날 때 어제 공부한 내용이 기억 나는 것 자체가 큰 은혜이다. 물론 많은 부분을 잊어 버리지만, 잊어 버리는 과정을 통해서 무의식적으로 공부한 내용이 체계적으로 정리되는 것이기 때문에 이 또한 감사한 일이다. 


암튼 나의 아버지되시는 하나님은 위대하신 분이다. 아버지 감사합니다! 찬양합니다! 


주님이 내게 주신 눈으로 봐야하는 것만 보고, 주님이 주신 뇌에 알아야 할 것만 담도록 노력하자. 

▶ 본문


열왕기상 22:41-46

41 이스라엘의 아합 왕 제사년에 아사의 아들 여호사밧이 유다의 왕이 되니

42 여호사밧이 왕이 될 때에 나이가 삼십오 세라 예루살렘에서 이십오 년 동안 다스리니라 그의 어머니의 이름은 아수바라 실히의 딸이더라

43 여호사밧이 그의 아버지 아사의 모든 길로 행하며 돌이키지 아니하고 여호와 앞에서 정직히 행하였으나 산당은 폐하지 아니하였으므로 백성이 아직도 산당에서 제사를 드리며 분향하였더라

44 여호사밧이 이스라엘의 왕과 더불어 화평하니라

45 여호사밧의 남은 사적과 그가 부린 권세와 그가 어떻게 전쟁하였는지는 다 유다 왕 역대지략에 기록되지 아니하였느냐

46 그가 그의 아버지 아사의 시대에 남아 있던 남색하는 자들을 그 땅에서 쫓아내었더라



▶ 묵상


남유다의 왕이었던 여호사밧을 소개한다. 그는 훌륭한 왕이었던 아버지 아사를 따라서 역시 여호와 앞에서 정직히 행했다. 백성이 산당에서 제사를 드리는 것을 막지는 못했지만, 하나님께 인정받은 몇 안되는 훌륭한 왕이었다. 여호사밧은 하나님을 의지하여 백성들을 신앙적으로 회복시키는 개혁을 주도하고, 많은 나라들과의 전쟁에서 승리하고, 또 그들에게 조공을 받는 부강한 나라로 만든다. 하지만 그에게 흑역사도 있었다. 열왕기상과 역대하를 살펴보면 아합과 동맹을 맺고 전쟁에 나가서 패하기도 하고, 해상무역을 하려다가 배가 파선되서 실패한 내용도 나온다. 완벽한 인생은 아니었지만, 그를 하나님은 인정하셨다. 아마도 그의 마음의 중심을 인정하신 것 같다. 


세상에는 많은 성공한 사람들이 있다. 항상 승승장구하고, 사람들에게 칭찬받고, 모든 것을 나이스하게 해내고, 돈 많고, 능력 있고, 뭔가 멋있는. 그러나 하나님께 인정받지 못한다면, 그 인생은 실패한 것이다. 이것은 어떤 시기심으로 하는 말이 아니다. 그런 사람 중에도 분명히 하나님께 인정을 받는 사람도 있을 것이다. 다만 그러한 환경과 조건을 갖고 있는 사람이라도, 하나님께 인정받지 못하면 실패한 인생이라는 것이다. 


"여호와 앞에서 정직히 행하였다"는 이 한 문장이 내 인생의 마지막 날에 나를 묘사할 수 있다면 좋겠다. 

▶ 본문


열왕기상 22:5-9

5 여호사밧이 또 이스라엘의 왕에게 이르되 청하건대 먼저 여호와의 말씀이 어떠하신지 물어 보소서

6 이스라엘의 왕이 이에 선지자 사백 명쯤 모으고 그들에게 이르되 내가 길르앗 라못에 가서 싸우랴 말랴 그들이 이르되 올라가소서 주께서 그 성읍을 왕의 손에 넘기시리이다

7 여호사밧이 이르되 이 외에 우리가 물을 말한 여호와의 선지자가 여기 있지 아니하니이까

8 이스라엘의 왕의 여호사밧 왕에게 이르되 아직도 이믈라의 아들 미가야 한 사람이 있으니 그로 말미암아 여호와께 물을 수 있으나 그는 내게 대하여 길한 일은 예언하지 아니하고 흉한 일만 예언하기로 내가 그를 미워하나이다 여호사밧이 이르되 왕은 그런 말씀을 마소서

9 이스라엘의 왕이 한 내시를 불러 이르되 이믈라의 아들 미가야를 속히 오게 하라 하니라



▶ 묵상


북이스라엘의 왕인 아합이 남유다의 왕인 여호사밧에게 길르앗 라못이라는 곳에 같이 싸우러 가자고 제안한다. 여호사밧은 그 제안을 받아들이면서 먼저 하나님의 뜻을 물어보자고 한다. 아합은 400명이나 되는 선지자 무리를 데리고 왔는데 그들은 모두 하나님이 승리를 주실 것이니 전쟁에 나가라고 예언한다. 여호사밧은 뭔가 느낌이 쏴했는지 또 다른 선지자가 있지 않냐고 묻는다. 그러자 아합은 미가야라는 선지자가 있는데 그 사람은 항상 자신에게 불리한 내용만 예언하기 때문에 안 불렀다고 이야기한다. 여호사밧은 미가야를 데리고 오라고 부탁한다. 


아합은 여호사밧의 요청에 어쩔 수 없이 선지자들을 소집해서 하나님의 뜻을 묻는다. 하지만 그들은 진정한 선지자가 아니었던 것 같다. 권력에 의탁한 자들로 왕이 원하는 말을 해주는 사람들이었다. 아합은 하나님의 뜻을 묻는 액션은 취했지만, 하나님의 뜻을 알고 싶은 마음은 없었던 것이다. 아합이 스스로 생각하기에 진짜 하나님의 뜻을 말해줄 미가야는 부르지 않은 것으로 봐서 추측할 수 있다. 마찬가지로 나도 기도하고 말씀을 보고 때로는 조언을 구하지만, 그저 내가 원하는 말을 듣고 싶어서 그럴 때가 참 많은 것 같다. 하나님의 뜻을 진정으로 구한다기보다는, 나의 행동에 정당성을 부여받고자 하는 마음에서라고 할까... 하나님의 뜻을 알고자 기도하고 말씀을 보도록 하자. 우리는 사실 아합과 같은 면이 많다. 듣고 싶은 이야기를 해주는 사람들만을 주변에 두고 싶어하는 면에서 말이다. 나의 약점을 이야기하거나 나에게 꼭 필요한 이야기를 해주는 사람을 미워한다. 그러다보니 유유상종, 끼리끼리 모여서 산다. 그러다 보니 성장이 더디다. 나를 칭찬하는 사람만이 아니라 경책하는 사람들도 친구로 삼자. 

▶ Otsu로 이미지 3개의 클래스로 분할하기


http://blueskyvision.tistory.com/category/%EC%BB%B4%ED%93%A8%ED%84%B0%20%EB%B9%84%EC%A0%BC%20%26%20%EC%98%81%EC%83%81%EC%B2%98%EB%A6%AC에 Otsu 방법을 사용해서 이미지를 이진화하는 것을 정리했다. 이진화가 이미지를 두 개의 클래스로 분할하는 것이라면, 이번에는 세 개의 클래스로 분할하는 것에 대해 공부해보자. 두 개의 클래스로 이미지를 분할해줄 때 역치값이 하나 필요했다면, 세 개의 클래스로 분할하려면 역치값이 두 개가 필요하다. 만약에 4개의 클래스로 분할하려면 3개의 역치값이 필요할 것이다. 좀 더 나아가서, n개의 클래스로 분할하려면, n-1개의 역치값이 필요할 것이다. n개의 클래스로 가장 잘 분할할 수 있는 n-1개의 intensity값들을 찾는 것이 Otsu 방법의 목적이다. 


세 개의 클래스로 분할하는 것을 생각해보자. 간단히 말해서 between-class variance를 구해서 최대가 되게 하는 두 개의 역치값(k_1, k_2)을 구하면 된다. between-class variance는 클래스 간의 분리도를 의미한다. 

... (1: between-class 분산)


여기서 

...(2: 한 픽셀이 클래스 1에 속할 확률)

...(3: 한 픽셀이 클래스 2에 속할 확률)

...(4: 한 픽셀이 클래스 3에 속할 확률) 

...(5: 클래스 1에 속하는 픽셀들의 평균 intensity 값)

...(6: 클래스 2에 속하는 픽셀들의 평균 intensity 값)

...(7: 클래스 3에 속하는 픽셀들의 평균 intensity 값)


이다. 그리고 L-1은 최대 intensity값을 의미한다. 

결국 between-class 분산을 최대가 되게 하는 k_1, k_2를 찾아서, intensity값이 k_1이하인 픽셀들을 클래스 1로, k_1 초과 k_2이하인 픽셀들을 클래스 2로, 나머지는 클래스 3으로 분할해준다. 




▶ 매트랩으로 구현


매트랩에서 제공하는 함수(multithresh)가 있지만, 한번 직접 코드를 짜봤다. multithresh함수를 사용하는 것과 같은 결과를 산출한다.

img = imread('flowers.JPG');

imshow(img);

img = rgb2gray(img);


[M, N] = size(img);

hist = zeros(256, 1);


for i = 1:M

    for j = 1:N

            hist(img(i, j)+1) = hist(img(i, j)+1) + 1; % [0 255] => [1 256]

    end

end


hist = hist/(M*N);


figure,

plot(hist)


%% P1, P2, P3


P1 = double(zeros(256, 256));

P2 = double(zeros(256, 256));

P3 = double(zeros(256, 256));


for k1 = 2:254

    for k2 = k1+1:255

        P1(k1, k2) = sum(hist(1:k1));

        P2(k1, k2) = sum(hist(k1+1:k2));

        P3(k1, k2) = sum(hist(k2+1:256));

    end

end


%% m1, m2, m3, mG


m1 = double(zeros(256, 256));

m2 = double(zeros(256, 256));

m3 = double(zeros(256, 256));

intensity = [0:1:255]';


for k1 = 2:254

    for k2 = k1+1:255

        m1(k1, k2) = 1/P1(k1, k2)*sum(intensity(1:k1).*hist(1:k1));

        m2(k1, k2) = 1/P2(k1, k2)*sum(intensity(k1+1:k2).*hist(k1+1:k2));

        m3(k1, k2) = 1/P3(k1, k2)*sum(intensity(k2+1:256).*hist(k2+1:256));

    end

end


mG = sum(intensity(1:256).*hist(1:256));


%% between-class variance


squared_sigma_B = P1.*(m1-mG).^2 + P2.*(m2-mG).^2 + P3.*(m3-mG).^2;

temp = squared_sigma_B(:);


[sorted_temp, ind] = sort(temp, 'descend');


[maximum, index] = max(temp);


k1_opt = rem(index, 256);

if k1_opt == 0

    k1_opt = 256;

end

k2_opt = ceil(index/256);


k1_opt = k1_opt-1;

k2_opt = k2_opt-1;


T = [k1_opt, k2_opt];

seg_I = imquantize(img, T);

RGB = label2rgb(seg_I);

figure, imshow(RGB)

axis off

 

결과 이미지는 그림 1에서 확인할 수 있다. 이진화했을 때보다 좀 더 명확히 꽃을 배경에서부터 구분해냈다. 


그림 1. 이미지를 세 클래스로 분할한 결과. 순서대로 원본 이미지, 히스토그램, 분할 결과 이미지



<참고 자료>

[1] 곤잘레스, Digital Image Processing, 3판, p. 774-778.


have to의 의미


have to'~해야한다, ~할 필요가 있다'는 의미로 쓰인다. 


ex) I have to get up early tomorrow. My flight leaves at 7:30. 나는 내일 아침에 일찍 일어나야 해. 비행기에 7시 30분에 출발해. 


의문문으로 사용할 때는 do/does/did를 앞에 붙인다. 


ex) What do I have to do to get a driver's license? 제가 운전면허증 따기 위해 해야하는 것은 뭐죠? 


부정문으로 사용할 때는 don't/doesn't/didn't를 앞에 붙인다.


ex) I don't have to get up early tomorrow. 나는 내일 아침에 일찍 일어날 필요가 없어. 



▶ must의 의미


must는 have to와 비슷하다. '~해야한다'는 뜻으로 쓰인다. 다만 have to가 좀 더 널리 사용된다. must는 특히 규칙이나 지시 사항에 사용된다. 


ex) Applications for the job must be received by May 18. 그 직업에 대한 지원은 5월 18일까지 해야한다. 


must의 부정형은 must not이다. 


ex) Students must not use cell phones in class. 학생은 수업 시간에 휴대폰을 사용해서는 안 된다. 



▶ must not과 don't have to의 차이


must not과 don't have to의 차이를 살펴보자. must not'~해서는 안된다'는 의미를 가지고, don't have to'꼭 ~할 필요는 없다'라는 뜻을 가진다. 


ex) You must not forget what I told you. It's very important. 너는 내가 말한거 잊어서는 안되. 그거 매우 중요하니까. 


ex) There's an elevator in the building, so we don't have to climb the stairs. 그 빌딩에 엘리베이터 있으니까 우리 계단으로 올라갈 필요가 없어.


 

<참고 자료>

[1] Raymond Murphy, Cambridge, Grammar in use internediate, p. 56-57. 

[2] http://blog.naver.com/bluewater_33/220406052371 => must not과 don't have to의 차이에 대해 참고

+ Recent posts

티스토리 툴바